Actionscript 3 变量值不会重定向到其他帧
当我的变量达到数字94时,我不会被重定向到第二帧。有什么建议吗Actionscript 3 变量值不会重定向到其他帧,actionscript-3,flash,Actionscript 3,Flash,当我的变量达到数字94时,我不会被重定向到第二帧。有什么建议吗 import flash.events.Event; stop(); //addEventListener(Event.ENTER_FRAME,cakeShow); var cakeSize:Number = 100; cakeButton.addEventListener(MouseEvent.CLICK,decCake); function decCake(event:MouseEvent):void { c
import flash.events.Event;
stop();
//addEventListener(Event.ENTER_FRAME,cakeShow);
var cakeSize:Number = 100;
cakeButton.addEventListener(MouseEvent.CLICK,decCake);
function decCake(event:MouseEvent):void {
cakeSize--;
cake.text = String (cakeSize);
}
cake.text = String(cakeSize);
if (cakeSize==94) {
gotoAndStop("two");
}
您只需检查变量一次,每次都应该这样做。所以,你必须更新你的函数
function decCake(event:MouseEvent):void {
cakeSize--;
cake.text = String (cakeSize);
if (cakeSize==94) {
gotoAndStop("two");
}
}
更新:看到您需要不断监视变量,您需要将其声明为属性
private var _cakeSize:int;
public function get cakeSize():int {return _cakeSize;}
public function set cakeSize(value:int):void {
_cakeSize=value;
if (_cakeSize==94) {
gotoAndStop("two");
}
}
这样,每次需要为变量设置值时都会调用“set”函数(也称为“setter”),每次检查其值时都会调用“get”函数(也称为“getter”)。所以你让它结块--代码>保持不变,但实际上Flash将首先调用getter,获取其返回值,并将其递减,然后使用新值调用setter。注意,如果您需要一次或在某些条件下进入第“2”帧,并且不是每次为cakeSize分配值94时,您都必须为setter函数提供特殊行为。如果您还没有运行一个,可能您正在寻找一个
var timer:Timer = new Timer(1000,0);
timer.addEventListener(TimerEvent.TIMER,update,false,0,true);
timer.start();
function update(e) {
if (cakeSize==94) { timer=null; gotoAndStop("two");}
}
此功能附加到按钮单击。若按钮在一段时间后不可用,所以我不能向其附加变量检查,该怎么办?是否有某种侦听器可以检查数字何时达到94?是的,但必须为所述数字创建setter属性。它是一个函数,因此每次为变量指定新值时都会调用它。这样做:(请参阅更新的答案)如果满足条件,请不要忘记删除update()中的侦听器,否则从其他地方发出的其他gotoAndStop()命令将无法正常运行,而cakeSize保持在94:)这是一个弱事件侦听器&计时器设置为null。。。所以监听器应该由gc来处理……哦,没有注意到使用了弱引用。很抱歉(我总是使用强引用)