用的是flash ActionScript3.0, 调试出现问题: Error: Error #1502: 脚本的执行时间已经超过了 15 秒的默认超时设置。 at _1811114060_fla::MainTimeline/frame3()[_1811114060_fla.MainTimeline::frame3:29] at flash.display::MovieClip/gotoAndPlay() at _1811114060_fla::MainTimeline/goGame1()[_1811114060_fla.MainTimeline::frame2:5]
frame2代码如下:
stop();
btn_game1.addEventListener(MouseEvent.CLICK,goGame1);
function goGame1(e:MouseEvent){
gotoAndPlay(3);
}
frame3代码如下:
stop();
var i:uint = 0;
var j:uint = 0;
var k:Boolean = true;
var array_btn:Array = new Array(btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9);
var array_pos:Array = [];
var array_rand:Array=[];//存放9个数字随机排列
for (i=0; i<9; i++)
{
array_pos[i] = [];
}
//9行2列,存放9个位置坐标
for (i=0; i<9; i++)
{
array_pos[i][0] = 50 + 100 * (i / 3);
array_pos[i][1] = 50 + 100 * (i % 3);
}
//获取0-8随机排列数组
i = 0;
while (i<9)
{
array_rand[i] = int(Math.random() * 8);
k = true;
for (j=0; j<i; j++) //与前面的随机数比较,如果相同则i不能加1 (此为上述错误信息中的frame3:29)
{
if (array_rand[i] == array_rand[j])
{
k = false;
break;
}
}
if (k)
{
i++;
}
}
for (i=0; i<9; i++)
{
var ii:uint=0;
ii=array_rand[i];
array_btn[ii].x = array_pos[i][0];
array_btn[ii].y = array_pos[i][1];
}
球球了,救救孩子。
frame3的第8行改成var array_rand:Array;后 错误变成了 TypeError: Error #1009: 无法访问空对象引用的属性或方法。 at _1811114060_fla::MainTimeline/frame3()[_1811114060_fla.MainTimeline::frame3:26] at flash.display::MovieClip/gotoAndPlay() at _1811114060_fla::MainTimeline/goGame1()[_1811114060_fla.MainTimeline::frame2:5]
一段段代码试过之后发现是生成随机数组那一段代码有问题,该成下面这样就没有错误了,虽然还是不知道为什么之前那个是错的
//获取0-8随机排列数组
for(i=0;i<9;i++){
array_rand[i]=Math.floor(Math.random()*9);
for(j=0;j<i;j++){
if(array_rand[i]==array_rand[j]){
i--;
break;
}
}
}
参考GPT和自己的思路:
你好,根据你提供的代码和错误信息,这个错误是由于脚本执行时间超过了默认的15秒而引起的。具体的原因是在frame3中生成随机数组那一段代码可能出现了死循环,导致脚本一直在执行而超时触发错误。
你已经成功修正了这个问题,将生成随机数组的代码改为了另一种更有效的方法,避免了可能出现的死循环,因此不再出现错误。
希望我的回答能够帮到你,如有其他问题,欢迎继续咨询。