Js与flash的交互操作

网站要搞一个投篮的活动,投篮表现的几个动作需要用flash来做,美工那边丢过来的页面中居然有五六个flash,说是通过样式来控制显示某个动作。对flash基本上没概念,心想这种做法真是憋屈,一个页面这么多的flash,让页面显得臃肿,js也不好控制(显示某个flash,其他都需要hidden),还出现了浏览器兼容问题,这种做法完全不可取。
那js能不能控制flash播放呢?答案肯定是可以的,通过搜索搜到一篇很符合我们需求的文章,它是用js控制flash的帧播放,只要把投篮动作做成一个flash,每一个帧播放的是投篮一系列动作。
一、在页面嵌入flash结构体

[html]
<object id=”myFlashMovie” classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ width=”481″ height=”86″ codebase=”http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0″>
<param name=”movie” value=”flips2.swf” />
<param name=”quality” value=”high” />
<param name=”play” value=”false” />
<param name=”bgcolor” value=”#FFFFFF” />
<embed type=”application/x-shockwave-flash” width=”481″ height=”86″ src=”flips2.swf” pluginspage=”http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash” bgcolor=”#FFFFFF” quality=”high” name=”myFlashMovie” swliveconnect=”true” play=”false”></embed> </object> [/html]

二、js获得flash object对象,具体请参照文档

[js]function getFlashMovieObject(movieName)
{
if (window.document[movieName])
{
return window.document[movieName];
}
if (navigator.appName.indexOf(“Microsoft Internet”)==-1)
{
if (document.embeds && document.embeds[movieName])
return document.embeds[movieName];
}
else // if (navigator.appName.indexOf(“Microsoft Internet”)!=-1)
{
return document.getElementById(movieName);
}
}
function StopFlashMovie()
{
var flashMovie=getFlashMovieObject(“myFlashMovie”);
flashMovie.StopPlay();
}
function PlayFlashMovie()
{
var flashMovie=getFlashMovieObject(“myFlashMovie”);
flashMovie.Play();
//embed.nativeProperty.anotherNativeMethod();
}
function RewindFlashMovie()
{
var flashMovie=getFlashMovieObject(“myFlashMovie”);
flashMovie.Rewind();
}
function NextFrameFlashMovie()
{
var flashMovie=getFlashMovieObject(“myFlashMovie”);
// 4 is the index of the property for _currentFrame
var currentFrame=flashMovie.TGetProperty(“/”, 4);
var nextFrame=parseInt(currentFrame);
if (nextFrame>=10)
nextFrame=0;
flashMovie.GotoFrame(nextFrame);
}
[/js]

实际上只用到了flashMovie.GotoFrame(nextFrame)这一个方法,这个方法用来控制flash跑到哪一帧,nextFrame参数就是flash的帧索引,记得顺序是从0开始。

发表评论

邮箱地址不会被公开。 必填项已用*标注