2012-05-08 2 views
-3

Uni 프로젝트를 위해 AS3에서 보드 게임을 만들고 있습니다. 무대 위에 15x15 크기의 사각형 보드를 만드는 가장 좋은 방법을 누군가가 나에게 말해 줄 수 있는지 궁금합니다. 사각형에 마우스 롤오버 효과를 추가 할 수 있기를 원합니다. 또한 플레이어가 보드를 클릭하면 카운터가 해당 사각형에 배치됩니다.AS3 보드 게임 15x15 스퀘어 보드 그리는 방법

답변

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 차원 배열에 액세스 할 수 있습니다. 리스너를 작성한 직후에 리스너를 추가 할 수 있습니다.

편집 : 플래시 프로페셔널 버전 : FP와 함께 작동해야

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,6 및 7 행에 오류가 발생합니까? 1084 : 구문 오류 : 오른쪽 괄호 앞에 세미콜론이 있어야합니다. 1084 : leftbracket 앞에 콜론이 있어야 구문 오류가 발생합니다. 1083 : 구문 오류 : for가 예기치 않게 발생했습니다. – Keys

+0

약간의 오타가있어 방금 고쳤습니다. –

+0

좋습니다. 왜 내가 오류가 발생하는지 알 수 있습니까? TypeError : Error # 1007 : 비 생성자에서 인스턴스화를 시도했습니다. 내가 가져 가라. mySquare는 하나의 타일 크기의 정사각형을 의미한다.이 타일은 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; 
}