ActionScript3勉強 事始め 手動で配置したステージ上のMC制御
Flash 9 Public Alpha と Flex Builder 2 を利用してAS3を勉強開始。
ネット上のAS3のサンプルを見てみるも、Flash 9のライブラリ内にあるMovieClipを動的に配置(addChildメソッドを利用)するサンプルはあるものの、手動でステージ上に配置したMovieClipの制御方法がわからず少々てこずりました。
解決までの悩んだ経路
1.お約束の Hello World! のみを表示する Sample.as ファイルを作成
2.Flash 9 上で「Document class」として「Sample」クラスを設定
3.パブリッシュしてみて Hello World! が表示されることを確認
4.Flash 9 上で適当な MovieClip を作成しステージ上に配置
5.配置した MovieClip のインスタンス名を mc と設定
6.パブリッシュしてみると以下のエラーが表示
ReferenceError: Error #1056: Sample のプロパティ mc を作成できません。 at flash.display::Sprite/flash.display:Sprite::constructChildren() at flash.display::Sprite$iinit() at Sample$iinit()
7.小一時間悩む
8.Sample.as内のプロパティフィールドに次の一行を記述
public var mc:MovieClip;
9.パブリッシュが通る
10.Sample.as内から ステージ上に配置した mc を制御可能に
ううむ、なるほど。今までAS2では、MovieClipを継承したクラスを作成したことがなかったため、この発想はありませんでした。この仕様のおかげで、よりいっそう厳密にプロパティ管理が行え、安全なコーディングが可能になりそうです。
どうしてもソースコード内のプロパティに一々ステージ上のMovieClipのインスタンスを宣言するのが面倒という場合は、Sampleクラスをダイナミッククラスにすればよいようです。プロパティとして mc を宣言していなくても、Sampleクラス内では mc インスタンスを制御できるようになります。但しコンパイル時のチェックが甘くなるので注意。
参考 akihiro kamijo
dynamic クラス