Flash与Javascript 间的联系
前几天,看见有人问到这方面的问题,这里做个总结。
flash与javascript的之间的调用总要涉及到FSCommand.
. 在关键桢或按钮的 Flash as中调用网叶中预设的脚本程序
..直接使用网叶中的脚本控制swf的播放状态(stop,play,gotoframe)
...flash向javascript环境发送命令。(在flash里已经聂内建了一系列的专供Flash Player使用的FSCommand,E.g.:Quit,FullScreen,Exec,ShowMenu......)
我想主要是这三种,第三种我就不说了,想大家也都会,这主要讲讲前两种
.flash对javascript的调用
这里主要用到了FSCommand,FSCommand包括两个参数:Command和Arguments
这我们在Flash as编写对话框会看到的。
那swf是怎么让javascript动作的呢?
因为FSCommand语句会激活javascript的moviename_DoFScommand语句
(其中moviename是指在EMBED或OBJECT项中的NAME属性所指定的swf文件名。)
比如说,我们要使在网叶中swf中的按钮在按下时有弹出alert框的效果
就必须现在按钮中加入Flash as:
on (release) {
fscommand ("messagebox","XXXXX") //XXX表示你要显示在alert框上的信息
tellTarget ("/MC_name")
play ();
}
}
然后选择html/Dimensions/flash with FSCommand导出
在导出的html中我们会发现这些源文件:
<SCRIPT LANGUAGE=JavaScript>
<!--
var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
// Handle all the the FSCommand messages in a Flash movie
function Movie1_DoFSCommand(command, args) {
var Movie1Obj = InternetExplorer ? Movie1 : document.Movie1;
//
// Place your code here...
//
}
// Hook for Internet Explorer
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 Movie1_FSCommand(ByVal command, ByVal args)\n');
document.write(' call Movie1_DoFSCommand(command, args)\n');
document.write('end sub\n');
}
//-->
</SCRIPT>
然后在 document.write('</SCRIPT\> \n'); 后面加上:
function swfName_DoFSCommand(command,args) {
if(command=="messagedox") {
alert(args);
}
}
注意:如果不是使用的flash自导出html,则需要在DW里把ID改为swfName,必须一致。
..直接使用javascript控制swf
方法主要是通过调用一些内建的Movie属性,做法和调用javsscript的内建属性(document.write()或window.close())是一个道理
那么,javascript能控制的swf的函数有哪些??
---- Play()
g.s.--YourMovieName.Play()
---- StopPlay()
g.s.--YourMovieName.StopPlay()
---- IsPlay()
e.g.--if(YourMovieName.IsPlaying)alert("Playing") //动画正在播放,弹出alert框
---- GotoFrame(int framesNum)
g.s.--YourMovieName.GotoFrame(n)
---- TotalFrames()
g.s.--YourMovieName.TotalFrames()
---- CurrentFrame()
g.s.--YourMovieName.CurrentFrame()+1 //返回动画当前桢数减一
---- Rewind()
g.s.--YourMovieName.Rewind() //回到第一桢stop
---- SetZoomRect(int left,int top,int right,int bottom)
//放大指定的坐标区域
---- Zoom(int percent)
e.g.--YourMovieName.Zoom(50) //放大一倍
--YourMovieName.Zoom(200) //缩小一倍
--YourMovieName.Zoom(0) //回复原大小
---- Pan(int x,int y,int mode)
//平移放大动画
---- PercentLoaded()
e.g.--if(YourMovieName.PercentLoaded()<100)
YourMovieName.GotoFrame(YourMovieName.PercentLoaded())
---- LoadMovie(int layer,Srting url) //载入其他动画
e.g.--LoadMovie(1,"yourmovie.swf")
---- TGotoFrame(String target,int frameNum) //控制跳到第几桢
e.g.--TGotoFrame("_flash0/mm","10") //mm为instance name
---- TGotoLabel(String target,string label) //控制跳到指定的label
---- TCurrentFrame(String taeget) //返回指定的MC的当前桢-1
e.g.--fras=YourMovieName.TCurrentFrame("_flash0/mm")+1
---- TCurrentLabel(String target) //返回指定的MC当前所在label
---- TPlay(String target) //控制MC的播放
e.g.--YourMovieName.Play("_flash0/mm")
---- TStopPlay(String target) //控制MC停止
HELP: g.s. = 格式 e.g. = 例子
...另外,还有一种通过Get URL 语句使用javascript
e.g.:
getURL("JavaScript:function()");
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |