关于 JavaScript 和 Flash 间的通信

javascript

本文讨论了3种基本的Flash/Javascript通信方式: Javascript 到 Flash的通信----使用Flash播放器的javascript方法 Flash 到 Javascript的通信----使用Flash的fscommand Flash 到 Flash的通信----------使用本地连接对象或综合上2种技术
前言、JavaScript和Macromedia Flash的通信示例

原文地址: http://www.macromedia.com/support/flash/ts/documents/java_script_comm.htm
说明: 略作修改,主要是一些很初级的操作; 又很多相似的文章,不过这个很权威

下面是一些在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文件中.

查看示例:示例
下载源文件: javascript_to_flash.zip(17k)

步骤:

Flash中
1.新建一个文件,保存为javascript_to_flash.fla
2.用文字工具在舞台上创建一个文本域
3.选择这个文本域,在属性面板中,从下拉列表中选择动态文本(Dynamic Text),在变量(variable)栏填上"myVar"
注意:最好的习惯是使用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也可以在属性面板里直接输入
(4) 在EMBED标签中,插入name="myFlash"和swLiveConnect="true",确保没有使用id属性!代码应当是这样子的:

<embed src="http://www.webjx.com/htmldata/2007-03-06/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()函数就被调用

4.创建传递变量值的Javascript函数
复制下面的Javascript到<head></head>标签内

<SCRIPT LANGUAGE=JavaScript><!--  function doPassVar(args){  var sendText = args.value;  window.document.myFlash.SetVariable("myVar", sendText);  }//--></SCRIPT>

5.保存文件,测试一下(F12)

二、Flash到Javascript的通信

从HTML可以发送数据到Flash,反过来也可以. 这个例子演示了如何应用Flash的Fscommand来发送数据到Javascript.

查看示例:示例2
下载源文件: flash_to_javascript.zip(10K)

简要步骤:
Flash中
新建一个文件,保存为flash_to_javascript.fla
创建一个文本域,设置成输入文本(Input Text),选择"border"以便我们能看到他,指定他的变量为inputVar
创建一个按钮,在按钮上添加如下的as:

on (release) {  fscommand ("send_var", inputVar);}

保存文件,导出HTML和SWF

Dreamweaver中
1.打开导出HTML文件,修改<OBJECT>和<EMBED>标签,结果同上:

<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 > <embed src="http://www.webjx.com/htmldata/2007-03-06/javascript_to_flash.swf" quality=highwidth=366 height=142type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" ></embed>

2. 插入如下的Javascript到<Body>标签内:

<SCRIPT LANGUAGE=JavaScript><!--  var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;    if (navigator.appName && navigator.appName.indexOf("Microsoft")   != -1 &&   navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows  3.1") == -1) {  document.write('<SCRIPT LANGUAGE=VBScript\> \n');  document.write('on error resume next \n');  document.write('Sub myFlash_FSCommand(ByVal command, ByVal args)\n');  document.write(' call myFlash_DoFSCommand(command, args)\n');  document.write('end sub\n');  document.write('</SCRIPT\> \n');  }  //-->  </SCRIPT>

三、Flash和Flash的通信

通过上面两种方法的混和使用,同一HTML中两个或者更多的Flash直接可以相互传送消息. 从一个flash使用fscommand传送消息给Javascript,使用Flash的Javascript methods把消息传给另外一个flash

详细的看这里:Flash影片之间的通信示例

从Flash MX开始,local connection对象可以用来在flash之间传送消息. 这使得同一HTML中的或者位于两个浏览器窗口中的两个flash影片可以相互发送消息,而不必使用Javascript或者fscommand
详细的看这里:在Flash MX中使用local connection对象(英文)

本站的localConnection教程:http://www.flashempire.com/school/tutorview.php?id=327

附可控制Flash Player的Javascript方法:
一览表:
Play() ---------------------------------------- 播放动画
StopPlay()------------------------------------停止动画
IsPlaying()----------------------------------- 动画是否正在播放
GotoFrame(frame_number)---------------- 跳转到某帧
TotalFrames()------------------------------- 获取动画总帧数
CurrentFrame()------------------------------回传当前动画所在帧数-1
Rewind()-------------------------------------使动画返回第一帧
SetZoomRect(left,top,right,buttom)-------放大指定区域
Zoom(percent)------------------------------改变动画大小
Pan(x_position,y_position,unit)------------使动画在x,y方向上平移
PercentLoaded()----------------------------返回动画被载入的百分比
LoadMovie(level_number,path)----------- 加载动画
TGotoFrame(movie_clip,frame_number)- movie_clip跳转到指定帧数
TGotoLabel(movie_clip,label_name)------ movie_clip跳转到指定标签
TCurrentFrame(movie_clip)--------------- 回传movie_clip当前帧-1
TCurrentLabel(movie_clip)-----------------回传movie_clip当前标签
TPlay(movie_clip)---------------------------播放movie_clip
TStopPlay(movie_clip)----------------------停止movie_clip的播放
GetVariable(variable_name)-----------------获取变量
SetVariable(variable_name,value)-----------变量赋值
TCallFrame(movie_clip,frame_number)---call指定帧上的action
TCallLabel(movie_clip,label)----------------call指定标签上的action
TGetProperty(movie_clip,property)--------获取movie_clip的指定属性
TSetProperty(movie_clip,property,number)-设置movie_clip的指定属

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javascript
, flash
, 文件
, 通信
, 标签
, java 文本域
, 使用Flash
, 示例
javascript标签
flash javascript、javascript操作flash、javascript tcp通信、javascript串口通信、javascript udp通信,以便于您获取更多的相关知识。

时间: 2025-01-30 07:36:34

关于 JavaScript 和 Flash 间的通信的相关文章

JavaScript与Flash 8.0通信之打印实战篇

javascript|打印 在发贴之前,我希望大家能给我提出宝贵的意见和建议,如有不对的地方,情给予指出: 同时我要感谢闪吧.Action Script讨论区的所以版主以及supertomato.因为这里有许多默默无闻的人为大家提供无偿的帮助,我在次作一点小小的贡献,希望能给大家带来一点小小的收获.谢谢! 最近为银行作一个凭证打印,应用到了javaScript与flash 8.0的通讯,所以我将这段代码贴出来.起初计划纯粹用javascrip作打印,后来想到要更好的升级(原因就不说啦),所以就用

JavaScript和Flash的通信

javascript 说明: 略作修改,主要是一些很初级的操作; 又很多相似的文章,不过这个很权威 下面是一些在Flash和使用javascript的HTML文件直接通信的示例,每个示例都有简略的步骤 本文讨论了3种基本的Flash/javascript通信方式: > javascript 到 Flash的通信----使用Flash播放器的javascript方法 > Flash 到 javascript的通信----使用Flash的fscommand > Flash 到 Flash的通

JavaScript 和 Flash 的通信

javascript <embed src="http://www.webjx.com/htmldata/2005-04-09/javascript_to_flash.swf" quality=highwidth=366 height=142type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P

flex与flash间通信(使用LocalConnection)的例子

使用LocalConnection我们可以很方便的实现Flex与Flash之间的通信,既可以从Flex发消息到Flash中,也可以从Flash发消息到Flex端.下面通过一个样例来演示使用方法.  效果图如下: --- Flash端 movie.swf ---  代码如下 复制代码 //创建LocalConnection对象,接受flex消息 var localConn:LocalConnection = new LocalConnection();   //localConnt添加一个停止函数

Javascript与flash交互通信基础教程_javascript技巧

下面是一些在Flash和使用Javascript的HTML文件直接通信的示例,每个示例都有简略的步骤 本文讨论了3种基本的Flash/Javascript通信方式: Javascript 到 Flash的通信----使用Flash播放器的javascript方法 Flash 到 Javascript的通信----使用Flash的fscommand Flash 到 Flash的通信----------使用本地连接对象或综合上2种技术 并不是所有的浏览器都很重视脚本.为了和Flash播放器通信,浏览

网页页面中如何用Javascript调用Flash动画?

flash动画|javascript|网页|页面 问:网页页面中如何用Javascript调用Flash动画? 答: 在<HEADE>区加入  程序代码 <script src="js/flash.js" type="text/javascript"></script> 在调用FLASH处加入  程序代码 <script language="JavaScript" type="text/java

如何通过交换机的VTP技术实现不同Vlan和不同网络间的通信

三层交换技术就是二层交换技术加三层路由转发技术,传统的交换技术在数据链路层进行操作,三层交换技术是在网络层实现数据包的高速转发.应用第三层交换技术即可实现网络路由的功能,又可以根据不同的网络状况做到最优的网络性能.三层交换机最重要的目的是加大大型局域网内部的数据交换,并不能取代路由器的工作,处于同一个局域网中各个子网的互联以及局域网中Vlan间的路由,用三层交换机来代替路由器,而只有局域网与公网互联网之间要实现跨越地域的网络访问时,才通过专业路由器. 了解了三层交换技术,我们下面通过交换机的VT

用php的socket跟flash的socket通信

关于socket不多说了,这个网上的资料很多,关于flash的资料也很多,这里只说在网上找不到资料或者资料很少的哦东西 php的socket资料可谓少之又少,光是在google上搜php socket,出来的结果页就是那么三四篇文章,点进去看看,基本都是 从手册上抄下来的,一点问题都起不了,以至于我花了两天时间才使php和flash成功通信,呵呵 其实,php和flash的socket通信不是问题的难点,难点在于flash的安全策略,特别是socket,特别是在flash player 10中要

彻底明白Java的多线程-线程间的通信

线程间的通信 1. 线程的几种状态 线程有四种状态,任何一个线程肯定处于这四种状态中的一种: 1) 产生(New):线程对象已经产生,但尚未被启动,所以无法执行.如通过new产生了一个线程对象后没对它调用start()函数之前. 2) 可执行(Runnable):每个支持多线程的系统都有一个排程器,排程器会从线程池中选择一个线程并启动它.当一个线程处于可执行状态时,表示它可能正处于线程池中等待排排程器启动它:也可能它已正在执行.如执行了一个线程对象的start()方法后,线程就处于可执行状态,但