在as3中移动二维数组内的东西?

时间:2015-06-08 12:32:17

标签: actionscript-3 flash multidimensional-array

我试图在as3中为cs类创建一个2048的克隆,我在移动块时遇到了麻烦。我基本上声明了一个4x4阵列:

var tiles:Array = new Array(new Array(4), new Array(4), new Array(4), new Array(4));

我把它全部设置为开头的空字符串:

for(i = 0; i < 4; i++){
    for(j = 0; j < 4; j++){
        tiles[i][j] = '';
    }
}

我还有一个显示功能,以便在帧上显示数组:

function display():void{
    for(i = 0; i < 4; i++){
        for(j = 0; j < 4; j++){
            if(tiles[i][j] != ''){
                tiles[i][j].x = 50 + (107 * j)
                tiles[i][j].y = 50 + (107 * i)
            }
        }
    }
}

我还有一个keydown事件来移动磁贴:

for(i = 0; i < 4; i++){
    for(j = 0; j < 4; j++){
        if(tiles[i][j] != ''){
            switch (event.keyCode){
                case Keyboard.LEFT:
                    tiles[i][0] = tiles[i][j]
                    break;
                case Keyboard.RIGHT:
                    tiles[i][3] = tiles[i][j]
                    break;
                case Keyboard.UP:
                    tiles[0][j] = tiles[i][j]
                    break;
                case Keyboard.DOWN:
                    tiles[3][j] = tiles[i][j]
                    break;
            }
            tiles[i][j] = ''
        }
    }
}

它应该将新磁贴设置为等效于旧磁贴,然后将旧磁贴设置为'',但由于某种原因,它将新磁贴和旧磁贴设置为{ {1}}!我不确定这里发生了什么,有人能指出我正确的方向吗?

0 个答案:

没有答案