[翻译]javascript和Macromedia
Flash的通信示例
原文地址:
www.macromedia.com/support/flash/ts/document./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)
[
点击下载
]
http://flash8.net/upload/2004/1/12/20041122045568336.zip 步骤:
>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=142type="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=highwidth=366
height=142type="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>
3.保存,预览
Flash和Flash的通信
通过上面两种方法的混和使用,同一HTML中两个或者更多的Flash直接可以相互传送消息.
从一个flash使用fscommand传送消息给javascript,使用Flash的javascript
methods把消息传给另外一个flash
详细的看这里:Flash影片之间的通信示例
http://www.macromedia.com/support/flash/ts/document./flash_to_flash_comm.htm
从Flash
MX开始,local
connection对象可以用来在flash之间传送消息.
这使得同一HTML中的或者位于两个浏览器窗口中的两个flash影片可以相互发送消息,而不必使用javascript或者fscommand
详细的看这里:在Flash
MX中使用local
connection对象
http://www.macromedia.com/support/flash/action_scripts/local_connection_objects/index.html 附可控制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的指定属性
详细资料:
www.macromedia.com/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html