ActionScriptのみで、タイムラインと同等の動きを作るには、どうすればいいのか?を知るための実験。
タイムラインにムービークリップを配置した時、インスタンス名(変数)の定義の状態や中身がどうなるのかを調べてみました。
フレーム1~4には以下のアクションを設定
1 |
trace(this.mc1, this.mc2, this.abc); |
フレーム5には以下のアクションを設定
1 2 |
trace(this.mc1, this.mc2, this.abc); this.stop(); |
フレーム2,4にムービークリップ(MC1 リンケージ設定あり)をインスタンス名mc1で配置。
フレーム3にムービークリップ(MC2 リンケージ設定なし)をインスタンス名mc2で配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package { import flash.display.MovieClip; import flash.events.Event; public class MC1 extends MovieClip { public function MC1() { trace("- MC1:[Constructor]"); this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); this.addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } function onAddedToStage(e:Event):void { trace("- MC1:ADDED_TO_STAGE"); } function onRemovedFromStage(e:Event):void { trace("- MC1:REMOVED_FROM_STAGE"); } } } |
実行すると、Flashの出力パネルに以下のように表示されます。
null null undefined
– MC1:[Constructor]
– MC1:ADDED_TO_STAGE
[object MC1] null undefined
– MC1:REMOVED_FROM_STAGE
null [object MovieClip] undefined
– MC1:[Constructor]
– MC1:ADDED_TO_STAGE
[object MC1] null undefined
– MC1:REMOVED_FROM_STAGE
null null undefined
ソースファイルは、こちらからダウンロード
分かったこと
・タイムラインのインスタンスは、フレーム1の時点で全てのインスタンス名(変数)が定義されている。
・タイムラインに現れた時とタイムライン上から消えた時は、インスタンス名の中身はnullとなる。
・タイムラインに現れる時にコンストラクタが呼ばれる。
・タイムラインに現れる時にADDED_TO_STAGEイベントが発生する。
・タイムラインから消える時にREMOVED_TO_STAGEイベントが発生する。
コメントを残す
コメントを投稿するにはログインしてください。