下面是一些在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)
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) 切换到代码视图,我们需要修改被选中的和标签
(3) 在object标签中,插入id=myflash
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属性!代码应当是这样子的:
type=application/x-shockwave-flash pluginspage=http://www.macromedia.com/shockwave/download/index.cgi?
p1_prod_version=shockwaveflash
name=myflash swliveconnect=true>
3.创建表单域
(1) 回到设计视图
(2) 插入文本域(insert> form object> text field),如果询问是否添加表单域,选择是
(3) 把文本域的html标签修改成这样:
每当文本域内容发生变化时,onchange就被触发,dopassvar()函数就被调用
4.创建传递变量值的javascript函数
复制下面的javascript到标签内
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文件,修改和标签,结果同上:
codebase=http://download.macromedia.com/pub/shockwave/cabs/
flash/swflash.cab#version=5,0,0,0
width=366 height=142 id=myflash>
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>
2. 插入如下的javascript到标签内:
\> \n');
}
//-->
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.blueidea.com/tech/multimedia/2003/739.asp
附可控制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的指定属性
