書き物

技術とか作った物の話とか愚痴文句感想など

ステージに指定した名前のMCは存在するか?

AS2.0が大分自分のものとなってきました。

面白くなってきました。

Flash付属のヘルプで、自分で分からないことを調べられるようになったことが、

成長したなぁと思える一因でもあります。



で、今日は探していた処理の方法が分かりました。


したかったことは、

「ステージに指定した名前のムービークリップが存在するか?」

の判定だったのですが、

適当にeval()とかで検索した結果、

シンタックス

targetpath(movieClipObject:MovieClip) : String

パラメータ

movieClipObject 検索するターゲットパスのムービークリップへの参照 (_root や _parent など)。

戻り値

指定したムービークリップのターゲットパスを含むストリング。

なんてものがあることを知りました。

って、ヘルプの記述ミスか?

"p"が大文字じゃないのですが。


ムービークリップのパスを文字列で返すなら、

もし対象のムービークリップが存在しないなら?

と思い、

trace(targetPath(<存在しないムービークリップ>));

でチェック。

案の定"undefined"を返したようです。

それじゃあ、

for (var i:Number = 0; ; i++) {    // 無限ループ
if (targetPath(_root.["test" + i]) == undefined) {
_root.attachMovie("mc_test", "test" + i, 10 + i);
break;
}
}

とでもすれば、

「ステージにその名前のムービークリップが存在しないなら

 その名前のムービークリップを生成」

なんてことができそうです。


テストしたとき、"break;"を忘れて無限ループ地獄に...。

Flashは応答なしで、強制終了。

気をつけましょう。


というレポートでした。