AS3棋盘游戏如何绘制15x15方板

时间:2012-05-08 19:11:08

标签: arrays actionscript-3

我正在AS3为Uni项目创建一个棋盘游戏。我想知道是否有人可以告诉我在舞台上创建15x15方块板的最佳方法?我希望能够在方块上添加鼠标翻转效果。此外,当玩家点击棋盘时,他们的计数器将被放置在该广场上。

2 个答案:

答案 0 :(得分:3)

这是非常基本的问题。二维板=你需要在另一个内部使用两个循环。

var myArrayOfTiles:Array = new Array();

var distanceX:Number = 0;
var distanceY:Number = 0;
for(var i:Number = 0; i < 15; i++) {
    myArrayOfTiles[i] = new Array();
    for(var j:Number = 0; j < 15; j++) {
        myArrayOfTiles[i][j] = new mySquare();
        myArrayOfTiles[i][j].x = distanceX;
        myArrayOfTiles[i][j].y = distanceY;
        distanceX += myArrayOfTiles[i][j].width;
    }
    distanceX = 0;
    distanceY += myArrayOfTiles[i][j].height;
}

通过这种方式,您可以定位切片和二维数组,以便访问它们。您可以在创建后立即添加侦听器。

修改:Flash专业版:

var myArrayOfTiles:Array = [];

var distanceX:Number = 0;
var distanceY:Number = 0;
for(var i:Number = 0; i < 15; i++) {
    myArrayOfTiles[i] = new Array();
    for(var j:Number = 0; j < 15; j++) {
    var mySquare:Symbol1 = new Symbol1();
        addChild(mySquare);
        myArrayOfTiles[i][j] = mySquare;
        myArrayOfTiles[i][j].x = distanceX;
        myArrayOfTiles[i][j].y = distanceY;
        distanceX += mySquare.width + 1;
    }
    distanceX = 0;
    distanceY += mySquare.height + 1;
}

这应该适用于FP,我检查了这个。

答案 1 :(得分:0)

您的错误可能是因为您没有使用正确的语法来创建变量。它应该是:

var mySquare:BoardTile = new BoardTile();

此外,您可以在创建电路板时直接添加mouseEventListener,并使磁贴对鼠标做出反应,就像它们是一个按钮一样。你这样做:

var myArrayOfTiles:Array = [];

var distanceX:Number = 0;
var distanceY:Number = 0;
for(var i:Number = 0; i < 15; i++) {
    myArrayOfTiles[i] = new Array();
    for(var j:Number = 0; j < 15; j++) {
    var mySquare:Symbol1 = new Symbol1();
        mySquare.addEventListener(MouseEvent.CLICK, fnClick); //adding the eventlistener
        mySquare.buttonMode = true; //now the cursor changes when you mouse over the square, to indicate you can interact with it
        addChild(mySquare);
        myArrayOfTiles[i][j] = mySquare;
        myArrayOfTiles[i][j].x = distanceX;
        myArrayOfTiles[i][j].y = distanceY;
        distanceX += mySquare.width + 1;
    }
    distanceX = 0;
    distanceY += mySquare.height + 1;
}