這是我第一次使用AS3,所以我很抱歉如果這個問題的原因是痛苦的明顯。錯誤#1502:腳本執行時間超過默認時間段15秒
我在下棋,我在棋盤上有一個棋子。當輪到玩家1時,所有黑色棋子都應該等待點擊,但是當我執行此操作時,它將返回錯誤#1502。
package chess.sprites{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class BlackBishop extends MovieClip{
public function BlackBishop(){
trace("bb created");
}
public function waitForClick(){
this.addEventListener(MouseEvent.MOUSE_DOWN, myTurn);
}
protected function myTurn(me:MouseEvent){
trace("Clicked");
}
}
}
BlackBishop中的函數waitForClick()正被另一個類調用。
public function setBlackTurn(){
for(var i:int = 0;i < 8;i++){
blackPawn[i].waitForClick();
}
for(var i:int = 0;i < 2;i++){
blackRook[i].waitForClick();
blackKnight[i].waitForClick();
blackBishop[i].waitForClick();
}
blackQueen.waitForClick();
blackKing.waitForClick();
}
我一直在讀錯誤#1502很多,但它似乎只發生在我添加在BlackBishop中的偵聽器。有任何想法嗎?
遊戲類:
package chess{
import flash.display.MovieClip;
import chess.sprites.*;
public class Game extends MovieClip{
//Contains all sprite classes
public var blackPawn:Array = new Array(8);
public var blackRook:Array = new Array(2);
public var blackKnight:Array = new Array(2);
public var blackBishop:Array = new Array(2);
public var blackQueen:BlackQueen;
public var blackKing:BlackKing;
public var whitePawn:Array = new Array(8);
public var whiteRook:Array = new Array(2);
public var whiteKnight:Array = new Array(2);
public var whiteBishop:Array = new Array(2);
public var whiteQueen:WhiteQueen;
public var whiteKing:WhiteKing;
public var boardArray:Array = new Array(64);
//Adds sprites to stage
public function addSprites(){
var spacing:int = 46;
for(var i:int = 0;i < 8;i++){
blackPawn[i] = new BlackPawn();
blackPawn[i].x = 112 + (spacing * i); //Sets x-pos of sprite
blackPawn[i].y = 316; //Sets y-pos of sprite
addChild(blackPawn[i]); //Adds sprite to stage
whitePawn[i] = new WhitePawn();
whitePawn[i].x = 112 + (spacing * i);
whitePawn[i].y = 362 - (spacing * 6);
addChild(whitePawn[i]);
}
for(i = 0;i < 2;i++){
blackRook[i] = new BlackRook();
blackRook[i].x = 112 + (spacing * 7 * i);
blackRook[i].y = 362;
addChild(blackRook[i]);
blackKnight[i] = new BlackKnight();
blackKnight[i].x = 158 + (spacing * 5 * i);
blackKnight[i].y = 362;
addChild(blackKnight[i]);
blackBishop[i] = new BlackBishop();
blackBishop[i].x = 204 + (spacing * 3 * i);
blackBishop[i].y = 362;
addChild(blackBishop[i]);
whiteRook[i] = new WhiteRook();
whiteRook[i].x = 112 + (spacing * 7 * i);
whiteRook[i].y = 362 - (spacing * 7);
addChild(whiteRook[i]);
whiteKnight[i] = new WhiteKnight();
whiteKnight[i].x = 158 + (spacing * 5 * i);
whiteKnight[i].y = 362 - (spacing * 7);
addChild(whiteKnight[i]);
whiteBishop[i] = new WhiteBishop();
whiteBishop[i].x = 204 + (spacing * 3 * i);
whiteBishop[i].y = 362 - (spacing * 7);
addChild(whiteBishop[i]);
}
blackQueen = new BlackQueen();
blackQueen.x = 112 + (spacing * 3);
blackQueen.y = 362;
addChild(blackQueen);
blackKing = new BlackKing();
blackKing.x = 112 + (spacing * 4);
blackKing.y = 362;
addChild(blackKing);
whiteQueen = new WhiteQueen();
whiteQueen.x = 112 + (spacing * 3);
whiteQueen.y = 362 - (spacing * 7);
addChild(whiteQueen);
whiteKing = new WhiteKing();
whiteKing.x = 112 + (spacing * 4);
whiteKing.y = 362 - (spacing * 7);
addChild(whiteKing);
}
public function resetArray(){
//Reset all values in array
for (var i:int = 0; i < 64; i++) {
boardArray[i] = false;
}
//Set appropriate values in array for starting positions
for (i = 0; i < 8; i++) {
boardArray[i] = true;
boardArray[i + 8] = true;
boardArray[i + (8 * 6)] = true;
boardArray[i + (8 * 7)] = true;
}
}
//Tells all black pieces to wait to be clicked
public function setBlackTurn(){
for(var i:int = 0;i < 8;i++){
blackPawn[i].waitForClick();
}
for(i = 0;i < 2;i++){
blackRook[i].waitForClick();
blackKnight[i].waitForClick();
blackBishop[i].waitForClick();
}
blackQueen.waitForClick();
blackKing.waitForClick();
}
public function setWhiteTurn(){
for(var i:int = 0;i < 8;i++){
whitePawn[i].waitForClick();
}
for(i = 0;i < 2;i++){
whiteRook[i].waitForClick();
whiteKnight[i].waitForClick();
whiteBishop[i].waitForClick();
}
whiteQueen.waitForClick();
whiteKing.waitForClick();
}
}
}
守則框架:
import chess.*;
var turn:int = 1;//1 is black, 2 is white
var gameRunning:Boolean = false;
var game:Game = new Game();
addChild(game);
game.addSprites();
game.resetArray();
gameRunning = true;
while(gameRunning){
if(turn == 1){
game.setBlackTurn();
}else if(turn == 2){
game.setWhiteTurn();
}else{
}
}
我看不到任何會cuase一個1502你肯定沒有別的事情嗎?也許分享更多的代碼。順便說一句,如果只是'mouseEnable = false',可能會更好一些,而不是一次又一次地添加同一個監聽器。 – BadFeelingAboutThis
我改變了我的代碼,像你說的那樣使用mouseEnabled函數,這實際上解決了一個問題,我知道我會後來碰到:) 即使我使用的時候,我也得到了1502。我可以向你展示我的主遊戲類中的代碼以及框架中的代碼,如果你認爲它有幫助。 –
請包含創建並填充這些數組的代碼。謝謝。 – null