我创建了一个自定义类(.as在下面:)。它存在于我的主时间轴中的三个实例(panel1,panel2和panel3)中,目前只有一个关键帧。
当我调试我的文件时,在第1帧中,为每个实例调用构造函数。凉。但是,稍后构造函数被称为每个实例的AGAIN,消除了我所做的任何更改。
通过从库中拖动实例,所有实例都放在舞台上。我的脚本中没有“= new Scorepanel()行。
是什么引发了这种情况,我该如何预防呢?
- 肯(非常沮丧)富兰克林
{
import flash.display.MovieClip;
import fl.text.TLFTextField;
public class scoreunit extends MovieClip
{
private var team:String = "WHOAMI";
private var points:Number = 0;
private var scorevalue:String;
private var teamname:String;
private var inited:Boolean = false;
function scoreunit()
{
if (! inited)
{
this.teamname = team;
this.scorevalue = String(points);
var teamnamebox=new TLFTextField();
teamnamebox.x = 2.25;
teamnamebox.y = 295.25;
teamnamebox.width = 295.25;
teamnamebox.height = 70;
teamnamebox.text = team;
var scorevaluebox=new TLFTextField();
scorevaluebox.x = 2.25;
scorevaluebox.y = 95.80;
scorevaluebox.width = 295;
scorevaluebox.height = 97.5;
scorevaluebox.text = scorevalue;
trace("I set the starting values");
trace("teamnamebox = ",teamnamebox.text);
trace("scorevalue = ",scorevaluebox.text);
inited = true;
}
}
public function score():Number
{
return points;
}
public function winpoints(n:Number)
{
points += n;
scorevalue = String(points);
scorevaluebox.text = scorevalue;
}
public function losepoints(n:Number)
{
points -= n;
scorevalue = String(points);
scorevaluebox.text = scorevalue;
}
public function setname(s:String)
{
team = s;
teamname = team;
teamnamebox.text = s;
trace("I changed the name to ",teamnamebox.text);
}
public function buzzin()
{
this.gotoAndStop("buzzedin");
}
public function makeddselect()
{
this.gotoAndStop("ddtarget");
}
public function makeyay(y:Number)
{
switch (y)
{
case 1 :
this.gotoAndStop("yay1");
break;
case 2 :
this.gotoAndStop("yay2");
break;
case 3 :
this.gotoAndStop("yay3");
break;
case 4 :
this.gotoAndStop("yay4");
break;
case 5 :
this.gotoAndStop("yay5");
break;
case 6 :
this.gotoAndStop("yay6");
break;
default :
trace("CRASH! "+y+" IS NOT A VALID YAY!");
}
}
public function makeboo(b:Number)
{
switch (b)
{
case 1 :
this.gotoAndStop("boo1");
break;
case 2 :
this.gotoAndStop("boo2");
break;
case 3 :
this.gotoAndStop("boo3");
break;
case 4 :
this.gotoAndStop("boo4");
break;
case 5 :
this.gotoAndStop("boo5");
break;
case 6 :
this.gotoAndStop("boo6");
break;
default :
trace("CRASH! "+b+" IS NOT A VALID BOO!");
}
}
public function makescrewing()
{
this.gotoAndStop("evilface");
}
public function makescrewed()
{
this.gotoAndStop("screwed");
}
public function makesplat()
{
this.gotoAndStop("eekface");
}
public function makefreeze()
{
this.gotoAndStop("frozen");
}
public function makehome()
{
this.gotoAndStop("inactive");
}
}
}
答案 0 :(得分:0)
您遇到的问题不是来自您的代码,而是来自时间轴。您的类中的代码只能访问当前显示的框架的元素,并且可以访问其他实例,符号,以及当前框架之外的任何内容。
你的问题是闪存第一次穿过每一帧,在调试中突出显示每个对象是否正确构建,但是一旦它到达时间轴上的最后一帧,它就会回到第一帧,再次执行从那里开始的一切,因为帧上出现的任何物体都会再次重新设置。
您需要避免手动将类实例放在舞台上。
此外,这是个人练习,如果您需要使用框架和代码,更喜欢使用单帧剪辑,并从代码中添加addChild()图标库,资源和gotoAndStop()。你最终会有更多的控制权,而且不那么沮丧。但总体而言,如果您正在编码,请尽可能避免使用框架;)
希望这有帮助!