-3

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

4

2 回答 2

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,我检查了这个。

于 2012-05-08T19:59:51.267 回答
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;
}
于 2012-05-09T09:54:09.633 回答