技術ブログ書くのは初めてなので、色々模索しながらなんですが、今回もFlashのスーパーフレームワークProgressionの話です。
普通、ActionScript3で表示オブジェクトを配置する際はaddChildというのを使用します。
var _hoge:Sprite = new Sprite();
addChild(_hoge);
これで_hogeが表示リストという所に追加され、画面に表示される様になります。
基本的にaddChildした順番に表示リストに入っていくので、
addChild(_hoge1);
addChild(_hoge2);
とすると、_hoge2が_hoge1の前面に来る事になります。
でも、前面にタイトルを表示した後に背面に画像とかを表示させたいって場合があると思います。
AS2なら、attachMovieClipの引数で表示の順番を指定出来るので、AS3のaddChildAtを使って、
addChildAt(_hoge1,2);
addChildAt(_hoge2,1);
こうやりたくなるんですが、
RangeError: Error #2006: 指定したインデックスが境界外です。
って怒られます。
なので、少々工夫が必要になります。
それを踏まえて、Progressionのコマンド(詳しくはこちらを参照の事)とキャストオブジェクトを使う場合以下のような場面に遭遇するかと思います。
例えば大きなイメージが最初出てきて、上にテキストがかぶさって表示される
addCommand(
new AddChild(progression.container, _image),
new Wait(1000),
new AddChild(progression.container, _text)
);
というようなコマンドを書いたとします。
これを「テキスト最初にして」と言われた場合です。
最初どうするか悩んだのですが、ドキュメントを読んで解決しました。
addCommand(
new AddChildAt(progression.container, _text,2),
new Wait(1000),
new AddChildAt(progression.container, _image,1)
);
これで解決してしまいます。
Progressionすげー!!
ということでActionScript3が全然上達しなくなるかもしれませんが、お勧めです。