Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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
Actionscript 3 变量值不会重定向到其他帧_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 变量值不会重定向到其他帧

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

当我的变量达到数字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 {

    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来处理……哦,没有注意到使用了弱引用。很抱歉(我总是使用强引用)