0

私はAS3にかなり慣れていません。私はこれを理解しようとして頭を悩ませてきました。グリッドシステムを配置しました。各グリッド ブロックはインスタンス化された行 1、行 2 などです。

for (var i:int = 0; i < 81; i++) を使用して子を繰り返し追加するコードがあります。

最後にその for ブロック内に、row.addChild(item); を追加します。行 + i を作成して、その行に自動的に名前を付けて子を追加する方法はありませんか? 私が持っている両方の本は、それについて言及していませんが、他のものにはある種の [i] または (i) を使用しています。

私はこの問題に何日も悩まされており、インターネット検索がこの問題に対して機能していないため、どんな助けも本当に感謝しています.

これが私のコードです:

for (var i:int = 0; i < 81; i++) {
        var item:MovieClip = new MovieClip();
        //item.fnumber = i;
        item.ftype = Math.round(Math.random() * 5 + 1); 


                        if (item.ftype == 1) {
                        var item:MovieClip = new item(); item.fnumber = i; item.fcolor = ""; item.ftype = 1}
                        if (item.ftype == 2) {
                        var item:MovieClip = new item2(); item.fnumber = i; item.fcolor = ""; item.ftype = 2}
                        if (item.ftype == 3) {
                        var item:MovieClip = new item3(); item.fnumber = i; item.fcolor = ""; item.ftype = 3}
                        if (item.ftype == 4) {
                        var item:MovieClip = new item4(); item.fnumber = i; item.fcolor = ""; item.ftype = 4}
                        if (item.ftype == 5) {
                        var item:MovieClip = new item5(); item.fnumber = i; item.fcolor = ""; item.ftype = 5}
                        if (item.ftype == 6) {
                        var item:MovieClip = new item6(); item.fnumber = i; item.fcolor = ""; item.ftype = 6}



                    row.addChild(item);
                    item.flevel = 1;
4

2 に答える 2

0

名前が計算されるコンポーネントに対処する場合は、this[computedName]アプローチを使用します。ただし、コンポーネントの名前を間違えた場合に発生する可能性がある、null または未定義のクエリで終わらないようにしてください。Baris のコードの変更:

var rows:Array = [];
var mcs:Array = [item, item2, item3, item4, item5, item6];

for(var n:int = 1; n<10; n++) {
    var row:MovieClip=this["row"+n]; // <-- this is the trick
    for (var i:int = 0; i < 81; i++) {

        var ftype = Math.round(Math.random() * 5 + 1); 
        var item:MovieClip = new mcs[ftype]();
        item.fnumber = i;
        item.fcolor = "";
        item.ftype = ftype;
        item.flevel = 1;

        row.addChild(item);

    }
    // addChild(row); this is not needed, as you have your rows already on screen
    rows.push(row);
 }

Baris には、ランダムに選択するクラスの配列を作成するなど、学習して習得するためのいくつかのトリックもありました。

于 2013-07-26T10:05:14.620 に答える