2012-05-08 110 views
-3

我在AS3中爲一個Uni項目製作棋盤遊戲。我想知道是否有人可以告訴我在舞臺上製作15x15棋盤格的最佳方法?我希望能夠在廣場上添加鼠標滾動效果。當玩家點擊棋盤時,他們的櫃檯將被放置在該廣場上。AS3棋盤遊戲如何畫15x15方形棋盤

回答

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 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; 
} 

應與計劃生育工作,我檢查這個。

+0

嗨,感謝您的幫助。想知道,當我嘗試你的代碼時,爲什麼我會在第5行和第7行發現錯誤? 1084:語法錯誤:在右paren之前預期分號。 1084:在leftbracket之前期待冒號的語法錯誤。 1083:語法錯誤:for是意外的。 – Keys

+0

有點錯字,只是修正了它。 –

+0

好極了。你有什麼想法,爲什麼我得到的錯誤,TypeError:錯誤#1007:實例試圖在非構造函數。我認爲mySquare的意思是一個tile的大小的正方形,這是一個爲Actionscript導出的movieClip? – Keys

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; 
}