变量值不会重定向到另一个帧

时间:2012-10-26 08:44:55

标签: actionscript-3 flash

当我的变量达到数字94时,我没有被重定向到帧“2”。有什么建议吗?

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");

}

2 个答案:

答案 0 :(得分:1)

您只需检查一次变量,每次发生某事时都应该这样做。所以,你必须更新你的功能。

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”)。所以你让那个cakeSize--;保持不变,但实际上Flash会首先调用getter,获取其返回值,递减它并使用新值调用setter。注意,如果需要一次或在某些条件下进行“两次”框架而不是每次都为cakeSize指定值94,则必须为setter函数提供特殊行为。

答案 1 :(得分:1)

也许你正在寻找一个timer,以防你还没有跑步。

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");}
}