参考:ActionScript 3.0でAS2のような_global変数を使う方法
クロックメイカー様のポストですし、もうこれで答えのような気がしますが、少し使い所を考えてみましょうか。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package { public const AppIconDefine:Array = [ {id:1, type:'11111', label:'電話'}, {id:2, type:'11110', label:'電話帳'}, {id:3, type:'00001', label:'連絡先'}, //(中略) {id:64, type:'10000', label:'マチキャラ'}, {id:65, type:'00010', label:'スマセレ'}, {id:66, type:'10000', label:'名刺作成'}, {id:67, type:'11110', label:'トーク'}, {id:100, type:'11111', label:'その他アプリ'}, {id:101, type:'11110', label:'ガジェット1×4'}, {id:102, type:'11110', label:'ガジェット2×4'}, {id:103, type:'11110', label:'ガジェット4×4'}, {id:104, type:'00001', label:'フォルダ'} ]; } |
一つの変数に入れるのであれば、こんな感じでまるでDBのようなクラスを作っておくと便利です。
大体こういう一覧はExcelで来るので、そのまま横の列に式の体裁をした文字列を作る式を入れちゃえば、Excelからシームレスにコンバートですよ!
セルに入れるのは、具体的にはこんな式です。しかもお金無いのでOpenOfficeですが。
1 |
="{id:"&A8&", type:'"& IF(C8="○";"1";"0") & IF(D8="○";"1";"0") & IF(E8="○";"1";"0") & IF(F8="○";"1";"0") & IF(G8="○";"1";"0") &"', label:'"&B8&"'}," |
使うときは「AppIconDefine」というのが、もう、オブジェクトを内包したグローバルな配列なのでどっからでも参照してしまいましょう。
上記の例では、typeの文字列は各携帯キャリアを表していて、「ドコモ,au,SB」とすると「111」だと全部のキャリアで使うアプリになります。
この配列を全部回して、「typeの一番最初が1なら使うやつだから」という感じで新規にドコモのアプリだけのローカルの配列を作っておきます。
配列を作るといっても、アイコンという実体のあるmcがあるのでmcの配列をつくり、そのときに各mcにidを埋め込んでいると楽です。MouseEventが動いた時などにidを送出さえすれば色々持ちわまれます。idとAppIconDefineの添字の関係を使えば「label」は直接
namePlateText.text = AppIconDefine[id-1].label
とやってしまえばいいのです。
mcを配列に入れるときというのは、当然そのmcにとっての親にがやるのが普通だとは思うが、大量になるであろうmcの中にわざわざ「var id:uint;」というダサイコードをすべてのmcにいれるというダサイことはしたくないものです。型を宣言すれば外側からでもプロパティを新規追加できます。
For文の中で
1 2 3 |
iconArray[i] = new MovieClip(); iconArray[i].id = Number(0); this.addChild(iconArray[i]); |
とやればちゃんとmc内の変数としてコンパイルエラーなく使えるようになります。