【发布时间】:2012-05-08 19:11:07
【问题描述】:
我正在为一个 Uni 项目在 AS3 中创建棋盘游戏。我想知道是否有人可以告诉我在舞台上创建 15x15 方格板的最佳方法?我希望能够在方块上添加鼠标悬停效果。此外,当玩家点击棋盘时,他们的计数器将放置在该方格上。
【问题讨论】:
标签: arrays actionscript-3
我正在为一个 Uni 项目在 AS3 中创建棋盘游戏。我想知道是否有人可以告诉我在舞台上创建 15x15 方格板的最佳方法?我希望能够在方块上添加鼠标悬停效果。此外,当玩家点击棋盘时,他们的计数器将放置在该方格上。
【问题讨论】:
标签: arrays actionscript-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,我检查了这个。
【讨论】:
var mySquare = new BoardTile; 这是我在舞台上绘制并导出为影片剪辑的一个红色小方块。错误只是指出TypeError: Error #1007: Instantiation attempted on a non-constructor. at Main/frame2()
您的错误可能是因为您没有使用正确的语法来创建变量。应该是:
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;
}
【讨论】: