Uniプロジェクト用にAS3でボードゲームを作成しています。ステージ上に15x15の正方形のボードを作成するための最良の方法を誰かに教えてもらえないかと思っていました。正方形にマウスのロールオーバー効果を追加できるようにしたいと思います。また、プレイヤーがボードをクリックすると、カウンターがその正方形に配置されます。
質問する
1244 次
2 に答える
3
これはかなり基本的な問題です。二次元ボード = 2 つのループを内側に使用する必要があります。
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;
}
そうすれば、タイルとそれらにアクセスできる 2 次元配列を配置できます。リスナーは、作成した直後に追加できます。
編集: Flash Professional バージョン:
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 に答える