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)可以看得出,沒有傳遞參數的入口,那怎麼可以傳遞參數呢?
poshidon 發表于 2008-5-12 09:45
試驗發現:
spin.addFrameScript(spin.totalFrames-1,stopSpin);
和
spin.addFrameScript(spin.totalFrames-1,stopSpin());
是不一樣的....
woohyuknrg 發表于 2008-5-12 10:15
addFrameScript雞肋啊~~~~~~~~~~~隻能傳沒有參數的函數,一旦帶了參數,這個function就隻執行一次,而且還是在影片剪輯第一幀就執行~太爛了~~~~~
通過return一個函數的方式,這樣就可傳參數。
注:因為是偏方,可能會造成其它問題,哈哈
poshidon 發表于 2008-5-12 13:40
可以傳參數的。
//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));