Actionscript 3.0未公开的addFrameScript()方法.此法主要是适合于使用flash 9创作环境来工作的群体.
addFrameScript的功能是允许你指定在flash player播放头播放到指定的位置时触发事件.这个方法可以接收四个参数,但目前只知道其中的前两个.
语法:MovieClip.addFrameScript(frame:uint,notify:Function)
用法:function output()
{
实际上addFrameScript()还可以接收任意多组的参数.如下:
MovieClip.addFrameScript(0,frame1Method, 1,frame2Method, 2,frame3Method);
也就是你说可以同时指定多组触发事件,在1,2,3帧上同时指定触发的动作,如果有不止一个动作事件指定在相同的一个帧上,那么,只有后者的动作会被触发.
如果要移除动作:MovieClip.addFrameScript(0,null)
trace('播放头已到了第10帧');
}
//帧数的计算是从0的位置开始的,所以在使用addFrameScript的时候9代表的即是第十帧.
addFrameScript(9,output);
不难发现,addFrameScript没有接受函数参数说明,而addFrameScript(frame:int, fun:Function)可以看得出,没有传递参数的入口,那怎么可以传递参数呢?
试验发现:
spin.addFrameScript(spin.totalFrames-1,stopSpin);
和
spin.addFrameScript(spin.totalFrames-1,stopSpin());
是不一样的....
addFrameScript鸡肋啊~~~~~~~~~~~只能传没有参数的函数,一旦带了参数,这个function就只执行一次,而且还是在影片剪辑第一帧就执行~太烂了~~~~~
通过return一个函数的方式,这样就可传参数。
注:因为是偏方,可能会造成其它问题,哈哈
可以传参数的。
//MovieClip.addFrameScript(帧号:uint,函数:Function,[帧号:uint,函数:Function]):void
function stopSpin(a:int):Function {
var my_fun:Function = function (){
trace(a);
};
return my_fun;
}
spin.addFrameScript(spin.totalFrames-1,stopSpin(1));