- 2008年5月29日 20:14
- AS3
AS3でムービークリップにラベルを設定してフレームスクリプト(stop()とか)を書く方法をメモ。
addFrameScriptという関数があって、これを指定してやればいいらしいです。引数は2つで、最初のがフレームラベルかフレーム番号、2番目が関数です。いままでフレームラベルチェック用のENTER_FRAMEをリスンしてたのでこれでかなり楽になったよ!! と書きたかったんですが、なぜか指定どおりに動きません。なぜだ。教えてくださいませませ…
以下の例はステージに置いた test_mc のクラスファイルです。
var testmc = new TestClass(test_mc)
フレーム1でインスタンスにクラスをあてます。フレーム4に"label1"、フレーム9に"label2"を書いてあります。フレームアクションは何も書きません。
package{
import flash.display.MovieClip;
public class TestClass extends MovieClip{
var my_mc:MovieClip
function TestClass(mc){
my_mc = mc
mc.addFrameScript("label1",func1)
mc.addFrameScript(9,func2)
}
function func1():void{
trace(my_mc.currentFrame) //結果:1
}
function func2():void{
trace(my_mc.currentFrame) //結果:10
}
}
}
実行結果は、フレーム4にあるはずのlabel1がフレーム1で実行されちゃっているのと、フレーム9で実行するはずのfunc2がフレーム10で実行されちゃってるという不具合があります。
追記。うまく動かないのはもしかすると、「自分自身のクラスで自分にaddFrameScriptしているからなのかも。他のクラスから動的に作った(リンケージの)mcに対してaddFrameScriptする、というのが正しい使い方なのか!!?
- Newer: 5月の図書館さん
- Older: インスタンスメンバーとクラスメンバー
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://ryow.net/mt/mt-tb.cgi/332
- Listed below are links to weblogs that reference
- AS3でタイムラインスクリプトを書きたければaddFrameScript()を使う from ryow.net Blog