JavaScript和Flash的通信(转)
### JavaScript和Flash之间的通信 随着Web技术的发展,不同的媒体组件如JavaScript和Flash之间进行交互的需求逐渐增加。在本文中,我们将深入探讨JavaScript和Flash如何实现跨语言通信,并提供实际的应用案例来帮助理解这一过程。 #### 一、JavaScript与Flash通信方式概述 根据提供的文件描述,我们可以总结出三种主要的通信方式: 1. **从JavaScript到Flash**:这种方式是通过调用Flash对象的方法来实现的。 2. **从Flash到JavaScript**:这种方式主要依靠Flash内置的`fscommand`函数。 3. **Flash与Flash之间的通信**:这种方式涉及到更复杂的机制,如使用共享对象(Shared Objects)或网络连接(Socket Connections)等。 #### 二、从JavaScript到Flash ##### 实现方法:使用Flash对象的方法 在网页中嵌入Flash内容时,可以通过设置Flash对象的ID来引用该对象,并调用其方法。具体步骤如下: 1. **创建Flash文件**:在Flash软件中创建一个名为`javascript_to_flash.fla`的文件。在舞台上添加一个动态文本框,并为其指定变量名`myVar`。 - **注意**:在实例名称处输入`myVar`,这样可以在Flash中访问到`myVar.text`的值。此操作适用于Flash 4及以上版本。 2. **发布SWF文件**:完成编辑后,发布此文件为SWF格式。 3. **在HTML中嵌入SWF文件**:使用Dreamweaver或其他HTML编辑器将SWF文件嵌入到HTML页面中。具体步骤包括: - 在HTML文件中插入SWF文件对应的`<object>`和`<embed>`标签。 - 设置`<object>`标签的`id`属性为`myFlash`。 - 在`<embed>`标签中设置`name="myFlash"`和`swLiveConnect="true"`属性,以启用跨域通信功能。 4. **设置输入框并传递变量**:在HTML页面中添加一个文本输入框,并在输入框发生改变时触发一个JavaScript函数`doPassVar()`,该函数将获取输入框的值并通过`SetVariable`方法传递给Flash。 5. **编写JavaScript代码**:在HTML文件的头部添加以下JavaScript代码: ```javascript <script type="text/javascript"> function doPassVar(args) { var sendText = args.value; window.document.myFlash.SetVariable("myVar", sendText); } </script> ``` 通过以上步骤,当用户在HTML页面上的文本框中输入文字时,这些文字将被实时传递给Flash对象中的动态文本框。 #### 三、从Flash到JavaScript ##### 实现方法:使用`fscommand`函数 从Flash向JavaScript发送数据通常涉及`fscommand`函数的使用。下面是一步一步的实现过程: 1. **创建Flash文件**:创建一个新的Flash文档,命名为`flash_to_javascript.fla`。在舞台上添加一个输入框并为其设置实例名称`inputVar`。 2. **编写ActionScript代码**:为输入框添加按钮,当按钮被点击时,执行以下ActionScript代码: ```actionscript on (release) { fscommand("send_var", inputVar); } ``` 3. **在HTML中嵌入SWF文件**:同样地,在HTML页面中嵌入SWF文件,并设置相应的`<object>`和`<embed>`标签。确保`swLiveConnect`属性被设置为`true`。 4. **监听Flash消息**:在HTML页面中编写JavaScript代码来监听Flash发送的消息。示例代码如下: ```javascript <script type="text/javascript"> window.addEventListener('message', function(event) { if (event.origin === 'http://yourdomain.com') { console.log(event.data); // 接收到的数据 } }, false); </script> ``` 通过这种方式,当用户在Flash中的输入框输入文字并点击按钮时,这些文字将被传递给JavaScript并打印到控制台。 #### 四、Flash与Flash之间的通信 对于更复杂的场景,如多个Flash对象之间的通信,可以使用共享对象或网络连接等方式。这些方法提供了更高的灵活性和更强的功能性,但同时也需要更多的开发工作量。 ### 总结 本文详细介绍了JavaScript和Flash之间的通信机制,并提供了具体的实现步骤和代码示例。这些方法为开发者提供了灵活的方式来构建功能丰富的Web应用,特别是在早期Web开发阶段。虽然现代Web开发更多地依赖于HTML5和JavaScript等技术,但了解这些传统技术之间的交互仍然具有一定的参考价值。
[日期:2004-02-05] 来源:蓝色理想 作者:qhwa [字体:大 中 小]
说明: 略作修改,主要是一些很初级的操作; 又很多相似的文章,不过这个很权威
下面是一些在Flash和使用javascript的HTML文件直接通信的示例,每个示例都有简略的步骤
本文讨论了3种基本的Flash/javascript通信方式:
> javascript 到 Flash的通信----使用Flash播放器的javascript方法
> Flash 到 javascript的通信----使用Flash的fscommand
> Flash 到 Flash的通信-----------使用本地连接对象或综合上2种技术
并不是所有的浏览器都很重视脚本.为了和Flash播放器通信,浏览器必须有内置的钩子以便Flash播放器可以'监听'.浏览器必须是下列的几种:
> Netscape Navigator 3.0-4.7x, 和 Netscape 6.2或更高
(Windows 95/98/NT/2000/XP 或 MacOS; 允许Java和LiveConnect)
>Internet Explorer 3.0 或更高
(仅Windows 95/98/NT/2000/XP; 允许ActiveX)
注意:Macintosh上的Internet Explorer和早期版本的Netscape6不支持这种方法.请查看本文的附加信息
javascript到Flash的通信
这个例子演示了如何使用Flash的method把变量从HTML的input text 发送到该页面中的Flash文件中.HTML input的数据通过Flash的SetVariable方法传送到Flash文件中.
查看示例:示例 下载源文件(17k)
步骤:
>Flash中
1.新建一个文件,保存为javascript_to_flash.fla
2.用文字工具在舞台上创建一个文本域
注意:最好的习惯是使用Instance,用myVar.text更改myVar的值.为了简单起见和兼容Flash4和Flash5,我们使用的是变量名的形式.
4.保存文件
5.发布HTML文件和SWF文件
>Dreamweaver中
下一步的工作转移到Dreamweaver中了,当然也可以是其他的HTML编辑器
1.打开上一步发布的HTML文件
2.插入生成的SWF文件和OBJECT/EMBED标签
(1) Insert>Media>Flash,并选择这个Flash
(2) 切换到代码视图,我们需要修改被选中的<OBJECT>和<EMBED>标签
(3) 在OBJECT标签中,插入id="myFlash"
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"codebase="http://download.macromedia.com
/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0"
width=366 height=142 id="myFlash">
注意:如果你是粘贴复制代码的话,确保删除不必要的换行.否则可能会引起错误; id也可以在属性面板里直接输入
(4) 在EMBED标签中,插入name="myFlash"和swLiveConnect="true",确保没有使用id属性!代码应当是这样子的:
<embed src="javascript_to_flash.swf" quality=high width=366 height=142
type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com
/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash";
name="myFlash" swLiveConnect="true"> </embed>
3.创建表单域
(1) 回到设计视图
(2) 插入文本域(Insert> Form Object> Text Field),如果询问是否添加表单域,选择是
(3) 把文本域的HTML标签修改成这样:
<input type="text" name="sendText" maxlength="45" onChange="doPassVar(this)">
剩余5页未读,继续阅读
- sutang_8882012-09-25资源不行,可以通过FABRIDGE.AS,FABRIDGE.JS(这两个是FLEX做的AJAX)实现。
- 粉丝: 1
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言-leetcode题解之70-climbing-stairs.c
- C语言-leetcode题解之68-text-justification.c
- C语言-leetcode题解之66-plus-one.c
- C语言-leetcode题解之64-minimum-path-sum.c
- C语言-leetcode题解之63-unique-paths-ii.c
- C语言-leetcode题解之62-unique-paths.c
- C语言-leetcode题解之61-rotate-list.c
- C语言-leetcode题解之59-spiral-matrix-ii.c
- C语言-leetcode题解之58-length-of-last-word.c
- 计算机编程课程设计基础教程