通常、タイムラインで配置したオブジェクトや、外部から読み込んだswfに名前をつけようとしても
Error: Error #2078: タイムラインに配置されたオブジェクトの name プロパティは修正できません。
というエラーが出て名前を変更できない。
それならば、と思ってカスタムクラスを作って、
private var _name:String; public override function get name():String{return _name;} public override function set name(value:String):void{_name = value;}
ってやって無理矢理名前をセットできるようにしてみましたが、これをやると、
//hogeを名前をつけられるようにしたオブジェクトとする hoge.name = 'test';//エラーは出ない OBJ.addChild(hoge); trace(OBJ.getChildByName('test'));//結果はnull trace(OBJ.getChildAt(0).name)//結果はtest
という謎の状態になってしまいました。
カスタムクラスのsetterで
super.name = value;
とするとやはりエラーが出るので、setterのnameは上のような動作ではなく、違う動作をすると思われます。何か内部的なIDを割り振っているんでしょうか。あるいは子の名前のリストを内部的に持っているとか?
別の方法で何とかしましたが、思いつきだけで動かしていると痛い目に遭いますね・・・。
余談:
既にunloadしているMovieClipをもう1度unloadしようとすると、エラーになる。
自分でunloadを仕込んだのに忘れてunloadしようとしたら
Error #2099: 読み込み中のオブジェクトは、十分に読み込まれていないので、その情報を表示することができません。
というエラーが。loaderが取得できないのかと思ったら、そもそもその前に削除していたという・・・。まあ確かにloaderが取得できない、という想像は正しいですがw