feeds2011/02/23カテゴリー:ActionScriptActionScript3.0のDictionaryクラスTweet今回は、ActionScript3.0のDictionaryクラスに関する学習メモです。ActionScript3.0で結合配列(連想配列)を使う際、多くの場合Objectクラスを使用しますが、Dictionaryクラスを使用すると配列のキーにオブジェクトの参照を指定することができます。簡単な例から試してみます。Dictionaryクラスのインスタンスは、new演算子で生成します。配列のキーは、オブジェクトの参照だけでなく、文字列やインデックス(添え字)でも指定できることが確認できます。true;trace(_dic[0]);trace(_dic.foo);trace(_dic[&quot;bar&quot;]);trace(_dic[_sp]);一応、Object型でも配列のキーに参照を使って試してみました。下記のコードはコンパイルは通りますが、期待した値を得ることができません。Object型では、キーに参照を使った場合、インスタンスの文字列表現、つまりtoString()の戻り値がキーとなっていることが確認できます。Sprite]&quot;]);次は、Dictionaryインスタンスに格納した値を削除してみます。nullを代入した場合には値のみが削除され、delete演算子を使用した場合はキーも削除されundefinedが出力されることが確認できます。_dic[sp2];trace(_dic[sp1]);trace(_dic[sp2]);またDictionaryクラスは、コンストラクタの第1引数でtrueを指定するとキーの参照に弱参照を使用することができます。弱参照を使用した場合、キーに使ったインスタンスがDictionary以外、どこからも参照されていない場合、そのインスタンスはガーベジコレクションの対象になります。キーに使ったインスタンスがガーベジコレクションで削除されるとキーに対応する値も削除されます。下記の例では、enterFrameでDictionaryインスタンスの要素数をtrace()しています。stageをクリックすると1000個のSpriteをそれぞれキーとしてDictionaryに要素を追加していますが、ガーベジコレクションのタイミングでDictionaryインスタンスの要素数が減ることが確認できます。}}Dictionaryクラスは、ArrayやVectorと比べると処理速度は遅いようですが、使いどころがたくさんあると感じました。ボタンのリンク先のURLを格納したり、インスタンスのプロパティを動的に格納することはもちろん、何よりオブジェクト同士を関連付けることができるので、アイデア次第ではかなり面白いことができそうです。試していきたいと思います。