你的位置:软件与光盘>
利用FS Command在分帧中控制动画
2000-03-25 00:00:00· newfish·晨曦空间

  FS Command是FLASH强大的功能之一,能恰当地运用,能做出惊人的效果。本站将会陆续推出一系列FS Command的教程,结合实例,给大家讲讲FS Command。现奉上网友问得最多的--如何在分帧的页面上控制FLASH动画。

FS Command可以说是FLASH动画与Javascript(或VBscript)的接口,当动画发出FS Command时,网页就可以执行指定的Javascript,来控制FLASH动画。

  FS Command有两个参数可填,分别是Command和Argument,如图。

不要小看这两个参数,能恰当得使用这两个变量,加上一些Javascript就能做出一些你意想不到的效果!这两个变量你可以随意写,除了一些特定的语句外。这些特定的语句是:

Command Argument 作用
quit 不填 关闭动画,退出FLASH的播放器
fullscreen True/False 控制FLASH的播放器是否进行全屏播放
allowscale True/False 控制FLASH动画是否随着FLASH播放器的变化而按比例变化
showmenu True/False True=按右键时能显示出菜单
False=没有菜单
exec 应用程序的路径 在播放器中打开一应用程序。


注:这些语句只能在动画单独播放时才有用

现在来说说如向网页中发出FS Command。现在我以怎样利用FS Command来控制网页 礁霾煌琭rame中的动画为例子来说明。请先看例子

我在这例子用了两个动画,左边的动画由三个按钮组成,第一个按钮的Actions是这样设的:
On (Press)
FS Command ("frame1", "")
End On
意思是当按下时,发出一个Command名为frame1的FS Command.同样地,在第二个按钮上设
On (Press)
FS Command ("frame2", "")
End On
第三个按钮上设
On (Press)
FS Command ("frame1", "")
End On

而右边的动画只有简单的三帧。

好了,把它们分别加在网页中不同的两帧处。如是用Dreamweaver编辑网页的,就分别给它们起一个ID名字,以便后面调用动画。如下图:

我就给左边的动画的ID为left,右边的ID为right.
如没有Dreamweaver的,就手动在$#@60;object$#@62;$#@60;/object$#@62;里加上id="xxx"

好了,现在就在左边frame的源代码中的$#@60;head$#@62;$#@60;/head$#@62;中加进下面的代码

$#@60;SCRIPT LANGUAGE="JavaScript"$#@62;
$#@60;!-- var InternetExplorer = navigator.appName.indexOf("Microsoft") == 0;
//判断浏览器是否为InternetExplorer
function left_DoFSCommand(command, args) {
//left为左边的动画的id
var map = InternetExplorer ? parent.rightframe.right : parent.rightframe.document.right;
//当浏览器为IE时,map就等于parent.right.right; (此为IE可识别的格式)
//若不是,map就等于parent.right.document.right;(此为Netscape可识别格式)
//而"map"只是一个变量名,你可以随意命名,但要在下面的相应语句中改回来。
//而parent.rightframe.right中间的"rightframe"就是右边的frame的名字;后面的"right"就是在右边的frame中的动画id
//其格式为parent.frame的名字.动画的id名字。
if (command=="frame1" ) {
map.GotoFrame(0);
}
//当FS Command为"frame1"时(按下第一个按钮时发出),就跳到map(即"map = InternetExplorer ? parent.rightframe.right"中所指定的动画)的第1帧;
//也就是名字为"right"的frame中id号为"right"的动画跳到第一帧; //其中GotoFrame是Javascript中能控制FLASH的语句之一,而全部的这些语句,请看附表
//下面的原理相同;
if (command=="frame2" ) {
map.GotoFrame(1);
}
if (command=="frame3" ) {
map.GotoFrame(2);
}
}
//--$#@62;
$#@60;/SCRIPT$#@62;
$#@60;SCRIPT LANGUAGE="VBScript"$#@62;
$#@60;!-- Sub left_FSCommand(ByVal command, ByVal args)
call left_DoFSCommand(command, args) end sub --$#@62;
//运用VBScript,当FLASH发出FS Command时,执行left_DoFSCommand(command, args);
//left为做边的动画的id
$#@60;/SCRIPT$#@62;


附表:能在Javascript里控制FLASH动画的函数表

Play() 使已停止了的FLASH动画在停止处开始播放
格式:YourMovieName.Play()
StopPlay() 停止正在播放的FLASH文件?
格式:YourMovieName.StopPlay()
IsPlay() 如果FLASH文件正在播放中,此函数值为true?
例如:if (YourMovieName.IsPlaying)
alert("Playing")
如当动画正在播放,就会弹出一个警告条。
GotoFrame(int frameNum) 控制FLASH跳到指定的frame
格式:YourMovieName.GotoFrame(10)
TotalFrames() 传回FLASH动画的总帧数???
格式:YourMovieName.TotalFrames()
CurrentFrame() 传回FLASH动画目前所在的帧数减一
FS Command控制的帧都是由0开始的
格式:YourMovieName.CurrentFrame()+1
Rewind() 控制FLASH动画条会第一帧并停止?
格式:YourMovieName.Rewind()
SetZoomRect(int left,
int top,int right,int bottom)
放大指定的坐标区域(int left=左坐标的整数;int right为右坐标的整数;int top和int bottom分别表示上坐标和下坐标的整数)
Zoom(int percent) 改变FLASH动画的大小。这函数只允许你将放大后的 图片缩小到原图片的大小
YourMovieName.Zoom(50)放大一倍
YourMovieName.Zoom(200)缩小一倍
YourMovieName.Zoom(0)恢复原始尺寸
Pan(int x,int y,int mode) 平移放大后的FLASH动画。x,y表示移动目的地的x轴和y轴的坐标;int mode表示表示坐标的单位,但其值为"0"时,以象数为单位,为"1"时,以百分比为单位。??
PercentLoaded() 回传0~100的值,此值为浏览器载入FLASH的百分比程度。可用此功能制作loading画面
如:if (YourMovieName.PercentLoaded()$#@60;100)
YourMovieName.GotoFrame(YourMovieName.PercentLoaded())
LoadMovie(int layer,
String url)
载入其他的FLASH动画,"int layer"为level的值,数值越大,动画就放得越上;"string url"为要栽入的动画的路径和名称??
如:LoadMovie(1, "yourmovie.swf")?表示把yourmovie.swf的动画加载到原来的动画上,level为1
LoadMovie("", "yourmovie.swf")表示卸载yourmovie.swf动画?
TGotoFrame(String target,
int frameNum)
控制动画跳到指定的movie clip的第几帧
TGotoFrame("_flash0/mm",10)表示跳到instance name为mm的movie clip的第十帧
TGotoLabel(String target,
String label)
控制动画跳到指定的movie clip的指定的label?
TGotoFrame("_flash0/mm","ten")
TCurrentFrame(String target) 传回指定的movie clip的当前所在帧减一?
fras=YourMovieName.TCurrentFrame("_flash0/mm")+1
TCurrentLabel(String target) 传回指定的movie clip当前所在的label?
label=play_movie.TCurrentLabel("_flash0/mm")
TPlay(String target) 控制指定的movie clip从停止出开始播放
YourMovieName.Play("_flash0/mm")
TStopPlay(String target) 控制指定的movie clip停止播放??
YourMovieName.Play("_flash0/mm")


【发表评论】【关闭窗口】