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