AS3でのドキュメントクラス。名前をコンフリクトおこしたりして、いやになっちゃう。けど、なんか使った方がいいみたいなんで、まとめ。あと、フレーム移動(gotoAndStop or gotoAndPlay)した後にドキュメントクラスを使う方法も。
■Flaの設定
パブリッシュ設定→ActionScript3.0設定→ステージのインスタンスの自動宣言のチェックをはずす
ドキュメントクラスにパスを通しておく。
1フレーム目にドキュメントクラスのインスタンスをひもづけるために
var hoge:Hoge;
を宣言
■ドキュメントクラスをHoge.asとする。
package { import flash.display.MovieClip; public class Hoge extends MovieClip { //ルート直下で名前をつけたものは必ずpublicで記述。 public var mc1:MovieClip; public var mc2:MovieClip; public function Hoge() { //1フレーム目の宣言とひもづける。 root["hoge"] = this; } } }
gotoAndPlayとか呼び出した後にドキュメントクラスのfunctionを呼びたいときは、タイムライン上においたhogeを使ってHogeの中にあるpublic functionをたたけばOK。
※参考 Event.RENDERとstage.invalidateを組み合わせることで、タイムラインに書かずにすむこともできるみたい。だけど、「Playerによってバグが出るかも」なんて言われたら怖いからやらないです。
※備考 ドキュメントクラスが使いたくてこんなことしてるけど、こんなことしなくてもAS2.0のように
var hoge:Hoge = new Hoge(this);
って1フレーム目に書いても同じようにできる。うーん。このEvent.RENDER使わなかったら結局タイムラインに書くことになるから、こっちの方法がいいのかな?
※参考URL
・ドキュメントクラスのメンバがコンフリクト
・AS3のgotoAndStop()問題とEvent.RENDERの使い道
・AS3:タイムラインを移動した直後にフレーム上のオブジェクトにアクセスできない
・ステージに配置したコンポーネントを、ドキュメントクラス内で使う方法
せっかくなので、実行順序を調べた結果を書いておこう。
1.ドキュメントクラスのコンストラクタ
2.rootのEvent.ADDED
3.rootのEvent.ADDED_TO_STAGE
4.rootのタイムラインスクリプト(1フレーム目ね)
5.rootのEvent.RENDER
■ 自作iPhoneアプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ