Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays ActionScript 3数组返回运行时错误_Arrays_Actionscript 3_Flash_Runtime Error - Fatal编程技术网

Arrays ActionScript 3数组返回运行时错误

Arrays ActionScript 3数组返回运行时错误,arrays,actionscript-3,flash,runtime-error,Arrays,Actionscript 3,Flash,Runtime Error,好的,我有下面的代码,它所做的就是在屏幕上放置3个纯色方块,在右下角放置一个彩虹色方块。当用户按下任何一个纯色方块时,该点会被彩虹色的方块填满,彩虹的原始位置会出现被点击的方块。除了一件事,代码几乎可以完美地工作。当用户尝试单击彩虹方块下的方块时,会返回运行时错误 我的代码: 我 mport flash.display.DisplayObject; 导入flash.ui.Mouse; 变量t1:DisplayObject=new mc_1; 变量t2:DisplayObject=new mc_2

好的,我有下面的代码,它所做的就是在屏幕上放置3个纯色方块,在右下角放置一个彩虹色方块。当用户按下任何一个纯色方块时,该点会被彩虹色的方块填满,彩虹的原始位置会出现被点击的方块。除了一件事,代码几乎可以完美地工作。当用户尝试单击彩虹方块下的方块时,会返回运行时错误

我的代码:

mport flash.display.DisplayObject;
导入flash.ui.Mouse;
变量t1:DisplayObject=new mc_1;
变量t2:DisplayObject=new mc_2;
变量t3:DisplayObject=new mc_3;
变量t4:DisplayObject=新的mc_4;
变量tile:Array=[[t1,t2],[t3,t4]];
var r:int;
var c:int;
变量a:int=50;
变量b:int=50;
var aa:int=1;
var bb:int=1;
函数重画(){
a=50;
b=50;

对于(r=0;r如果您查看代码,您会发现:

//Down:
    else if (e.target == tile[aa+1][bb]) {
        tile[aa][bb] = e.target;
        aa += 1;
        tile[aa][bb] = t4;
        reDraw();
        trace("Down");
    }
现在您可以在这里看到,它正在查找磁贴[aa+1],但在开始时aa=1,因此aa+1=2和磁贴[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;
}
var tileFound:Boolean=false;
对于(变量i:int=0;i<2;i++){
对于(var j:int=0;j<2;j++){
如果(平铺[i][j]==e.target){
tileFound=真;
瓷砖[aa][bb]=e.target;
瓦[i][j]=t4;
如果(i>aa)跟踪(“正确”);
如果(ibb)轨迹(“底部”);
如果(j
go()未定义…时间线脚本??所有这些代码都在第1帧下的时间线上。您必须提供该方法-它缺失。您是否有线路故障?我打赌该瓷砖[aa][bb+1]当bb+1大于或等于2时可能会出现问题。正如你所看到的,我有一个跟踪命令,告诉我bb和aa是什么,当彩虹在第一行时,它返回“0 0”,所以[aa][bb+1]等于[0][1],这是(至少我认为是)一个有效的语句?
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;
}