0

変数が 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");

}
4

2 に答える 2

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");}
}
于 2012-10-26T10:20:32.220 に答える
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 が割り当てられるたびにではなく、1 回または特定の条件下でフレーム「2」に移動する必要がある場合は、setter 関数に特別な動作を提供する必要があることに注意してください。

于 2012-10-26T08:56:44.120 に答える