天天看點

ActionScript3.0 addFrameScript 傳遞參數

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));