[英]ActionScript 3 Array Return Runtime Error
好吧,所以我有以下代碼,它所做的只是在屏幕上放置3個純色方塊,在右下角放置一個彩虹色方塊。 當用戶按下任何一個純色方塊時,該點被彩虹色的方塊填滿,並且在彩虹的原始位置進入被點擊的方塊。 除了一件事之外,代碼幾乎完美無缺。 當用戶嘗試單擊位於彩虹方塊下方的方塊時,它將返回運行時錯誤。
我的代碼:
一世
mport flash.display.DisplayObject;
import flash.ui.Mouse;
var t1:DisplayObject = new mc_1;
var t2:DisplayObject = new mc_2;
var t3:DisplayObject = new mc_3;
var t4:DisplayObject = new mc_4;
var tile:Array = [[t1,t2],[t3,t4]];
var r:int;
var c:int;
var a:int = 50;
var b:int = 50;
var aa:int = 1;
var bb:int = 1;
function reDraw() {
a = 50;
b = 50;
for (r=0;r<2;r++) {
for (c=0;c<2;c++) {
tile[r][c].x = a;
tile[r][c].y = b;
trace(tile[r][c]);
stage.addChild(tile[r][c]);
tile[r][c].addEventListener(MouseEvent.CLICK, go);
a += 100;
}
a = 50;
b += 100;
}
}
reDraw();
function go(e:MouseEvent):void {
trace(e.target);
//Right:
if (e.target == tile[aa][bb+1]) {
tile[aa][bb] = e.target;
bb += 1;
tile[aa][bb] = t4;
reDraw();
trace("Right");
}
//Left:
else if (e.target == tile[aa][bb-1]) {
tile[aa][bb] = e.target;
bb -= 1;
tile[aa][bb] = t4;
reDraw();
trace("Left");
}
//Up:
else if (e.target == tile[aa-1][bb]) {
tile[aa][bb] = e.target;
aa -= 1;
tile[aa][bb] = t4;
reDraw();
trace("Up");
}
//Down:
else if (e.target == tile[aa+1][bb]) {
tile[aa][bb] = e.target;
aa += 1;
tile[aa][bb] = t4;
reDraw();
trace("Down");
}
else trace("FAILED!");
trace(aa +" " + bb);
}
錯誤:
TypeError:錯誤#1010:術語未定義且沒有屬性。 在win_fla :: MainTimeline / go()
如果你看看你的代碼,你有這個:
//Down:
else if (e.target == tile[aa+1][bb]) {
tile[aa][bb] = e.target;
aa += 1;
tile[aa][bb] = t4;
reDraw();
trace("Down");
}
現在你可以看到它在尋找tile [aa + 1]然而aa = 1在開頭所以aa + 1 = 2並且tile [2]不存在或未定義。 您需要將邏輯更改為:
var tileFound:Boolean = false;
for(var i:int = 0; i < 2; i++){
for(var j:int = 0; j < 2; j++){
if(tile[i][j] == e.target){
tileFound = true;
tile[aa][bb] = e.target;
tile[i][j] = t4;
if(i > aa) trace ("Right");
else if(i < aa) trace ("Left");
if(j > bb) trace ("Bottom");
else if(j < bb) trace ("Top");
aa = i;
bb = j;
reDraw();
tileFound = true;
break;
}
}
if(tileFound) break;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.