Actionscript 3 我在as3中遇到堆栈溢出错误
我是flash的初学者,但不擅长面向对象编程。 我正在制作一个商业模拟多人棋盘游戏。此敬礼函数是从.fla文件调用的,此敬礼函数调用moveto函数。敬礼函数工作正常。但问题出现在dialog2.x=200;的moveto上;。如果我删除该行,问题将转到下一行,请帮助我Actionscript 3 我在as3中遇到堆栈溢出错误,actionscript-3,Actionscript 3,我是flash的初学者,但不擅长面向对象编程。 我正在制作一个商业模拟多人棋盘游戏。此敬礼函数是从.fla文件调用的,此敬礼函数调用moveto函数。敬礼函数工作正常。但问题出现在dialog2.x=200;的moveto上;。如果我删除该行,问题将转到下一行,请帮助我 public function salute(a:Array) { a[0].x=200; a[0].y=200; if(k==0) { tilehold.amount.text=Str
public function salute(a:Array)
{
a[0].x=200;
a[0].y=200;
if(k==0)
{
tilehold.amount.text=String(amount);
tilehold.networth.text=String(networth);
tilehold.playertitle.text=playername;
dialog2=a[1];
dialog3=a[2];
dialog4=a[3];
dialog5=a[4];
dialog6=a[5];
forbuild=a[6];
k=1
}
a[0].dialogtext.text=playername+"'s turn";
a[0].addEventListener(MouseEvent.MOUSE_DOWN,nothing1);
function nothing1(e:MouseEvent)
{
a[0].x=1000;
e.target.removeEventListener(MouseEvent.MOUSE_DOWN,nothing1);
a[7].x=-10;
a[7].y=-10;
a[7].addEventListener(MouseEvent.CLICK,wheelspin);
}
function wheelspin(e:MouseEvent)
{
spinvalue=Math.floor(Math.random()*10);
a[7].wheel.spin(spinvalue);
a[7].wheel.gotoAndPlay(2);
e.target.removeEventListener(MouseEvent.CLICK,wheelspin);
a[7].addEventListener(MouseEvent.CLICK,wheelmove);
}
function wheelmove(e:MouseEvent)
{
a[7].x=1000;
e.target.addEventListener(MouseEvent.CLICK,wheelmove);
}
moveto();
}
public function moveto()
{
if(spinvalue==0||spinvalue==7||spinvalue==8||spinvalue==9)
{
if(nooflandsown==0)
{
/*上面的一个工作正常,但此错误指示行下方*/
请帮帮我。我通过修改整个代码做了很多尝试。但是我不明白为什么要在事件侦听器函数中添加事件侦听器?第二,检查您是否确实在没有再次调用sallet的情况下退出moveto函数,如果没有,那么您必须在其他地方更改代码流逻辑。此外,如果是大型代码,您可以使用Internet上的PasteBin服务来托管代码。不知道为什么会在没有解释的情况下获得如此多的反对票。无论如何,你可以发布你得到的堆栈溢出错误。如果dialog2.x=200;是导致堆栈溢出错误的原因,我只能假设您已经重写了display对象的xsetter方法。可能看起来像重写公共函数集xvalue:Number{this.x=value;},这只是一个猜测。检查:在wheelspin中,您说的是[7]。AddEventListenerMouseeEvent。单击,wheelmove;然后在wheelmove中,再次说出e.target.AddEventListenerMouseeEvent。单击wheelmove;这又是[7]了。很抱歉,这是removeEventlistener wheelmove,退出moveto此移动以进一步调用另一个函数是什么意思?是的,moveto调用endturn,而endturn又调用Salet?您已经有效地创建了一个无限递归场景。您必须重做您的逻辑,以便您的函数最终将结束执行,并且执行的下一阶段应该从事件侦听器开始。这就是所谓的体系结构,将代码分成更小的块,并为它们设计一种作为单个实体移动的方式。错误:错误1023:发生堆栈溢出。在game_fla::MainTimeline/frame5[game_fla.MainTimeline::frame5:75]参考错误:错误1069:在Land1上未找到属性成本,并且没有默认值。在Icon4/buyorrent[D:\game\Icon4.as:318]在Icon4/frame35[Icon4::frame35:5]上,有一个movieclips数组,其中一个[7]是我在游戏中使用的轮子。请提供函数的源代码:endturn,chooseland,例如,通过更新问题,并再次检查某个函数是否在实际从moveto调用moveto时调用moveto,即使是间接调用。
dialog2.x=200;
dialog2.dialogtext.text="you dont own any land";
dialog2.okbut.addEventListener(MouseEvent.CLICK,nothing2);
function nothing2(e:MouseEvent)
{
dialog2.x=1000;
e.target.removeEventListener(MouseEvent.CLICK,nothing2);
endturn();
}
}
else
{
dialog3.x=200;
dialog3.y=200;
dialog3.dialogtext.text="do you want to build";
dialog3.yesbut.addEventListener(MouseEvent.CLICK,wanttobuild);
dialog3.nobut.addEventListener(MouseEvent.CLICK,nothing3);
function wanttobuild(e:MouseEvent)
{
dialog3.x=1000;
e.target.removeEventListener(MouseEvent.CLICK,wanttobuild);
dialog3.nobut.removeEventListener(MouseEvent.CLICK,nothing3);
chooseland();
}
function nothing3(e:MouseEvent)
{
dialog3.x=1000;
dialog3.yesbut.removeEventListener(MouseEvent.CLICK,wanttobuild);
e.target.removeEventListener(MouseEvent.CLICK,nothing3);
endturn();
}
}
}
else
{
l=(currentposition+spinvalue)%18;
this.pos=l;
switch(currentposition)
{
case 1:
this.gotoAndPlay(15);
break;
case 2:
this.gotoAndPlay(25);
break;
case 3:
this.gotoAndPlay(35);
break;
case 4:
this.gotoAndPlay(55);
break;
case 5:
this.gotoAndPlay(65);
break;
case 6:
this.gotoAndPlay(75);
break;
case 7:
this.gotoAndPlay(85);
break;
case 8:
this.gotoAndPlay(105);
break;
case 9:
this.gotoAndPlay(115);
break;
case 10:
this.gotoAndPlay(125);
break;
case 11:
this.gotoAndPlay(135);
break;
case 12:
this.gotoAndPlay(145);
break;
case 13:
this.gotoAndPlay(165);
break;
case 14:
this.gotoAndPlay(175);
break;
case 15:
this.gotoAndPlay(195);
break;
case 16:
this.gotoAndPlay(205);
break;
case 17:
this.gotoAndPlay(215);
break;
default:
this.gotoAndPlay(1);
}
currentposition=l;
}
}