オブジェクトごとの一意なIDを生成する
mx.utils.NameUtil#createUniqueName()でオブジェクトの一意なIDを作成できます。
- IDは「無修飾のクラス名+番号」になります。
- 「無修飾のクラス名」なら、パッケージが違う同名クラスだと同じIDになるのでは、と思いきや、番号がすべてのオブジェクトで一意でした。
- なら「無修飾のクラス名」とかいらなくね!、とは思うけど。
package { import mx.utils.*; import flash.display.*; import flash.text.*; import example.*; import example2.*; // NameUtil.createUniqueName のサンプル public class Sample extends Sprite { public function Sample(){ var a:Object = new Object(); var b:Object = new Object(); // オブジェクトごとの一意なIDを生成する var str:String = ""; str += NameUtil.createUniqueName(a) + "\n"; // Object0 str += NameUtil.createUniqueName(b) + "\n"; // Object1 // 「無修飾のクラス名+番号」なので、パッケージが違う同名クラスだと // 同じIDになるのでは、と思ったけど、番号はすべてのオブジェクトで一意でした。 var x:example.Test = new example.Test(); var x2:example2.Test = new example2.Test(); str += NameUtil.createUniqueName(x) + "\n"; // Test2 str += NameUtil.createUniqueName(x2) + "\n"; // Test3 // 結果を表示 var stdout:TextField = new TextField(); stdout.width = 500; stdout.height = 500; addChild(stdout); stdout.text = str; } } }