0

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

}
4

2 回答 2

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 函数提供特殊行为。

于 2012-10-26T08:56:44.120 回答
1

也许您正在寻找一个计时器,以防您还没有一个正在运行的计时器。

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");}
}
于 2012-10-26T10:20:32.220 回答