分享
 
 
 

关于 JavaScript 和 Flash 间的通信

王朝html/css/js·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

本文讨论了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="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)">

每当文本域内容发生变化时,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 id="myFlash">

<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>

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

<SCRIPT LANGUAGE=JavaScript>

<!--

var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;

function myFlash_DoFSCommand(command, args) {

var myFlashObj = InternetExplorer ? myFlash : document.myFlash;

alert (args);

}

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的指定属

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有