0

1つのファイルから実行する必要がある2つのムービー(swf)があります。

どちらにも個別のプリローダーがあります。

最初のムービーをロードして、再生中に停止します。2本目の映画を再生するために、私はタイマーを使用しています。2番目のムービーに移動するには、タイマーが期限切れになるまでタイマーを実行する必要があります。

これがコードです。

var today:Date = new Date();

var currentTime = today.getTime();

var targetTime =  currentTime + 20000;


this.onEnterFrame = function()
{
//Determines how much time is left.  Note: Leaves time in milliseconds
var timeLeft = targetTime - currentTime;

if(timeLeft<0)
{

    gotoAndPlay(3);
    }

}

警告が表示されます-シーン1、レイヤー'アクション'、フレーム2、15行目警告:1090:移行の問題:OnEnterFrameは、ActionScript3.0の実行時にFlashPlayerによって自動的にトリガーされません。最初に、addEventListener('enterFrame'、callback_handler)を使用して、このハンドラーをイベントに登録する必要があります。

それをどのように処理しますか?

4

1 に答える 1

0

これはActionScript3であるため、AS2スタイルのオン関数は機能しなくなります。これを使用する代わりに:

this.onEnterFrame = function () {
    // code...
}

これを使って:

this.addEventListener(Event.ENTER_FRAME, function (e:Event) {
    // code...
});

AS3では、新しいイベントモデルが、AS2の自動的に呼び出される関数の多くを置き換えます。これは、良いことであることがわかります。新しい構文に慣れると、AS2が提供するものよりもかなり堅牢になります。

これでエラーは修正されますが、コードは何も実行できません。コード自体には複数の問題がありますが、実際には、とにかくそのようにアプローチするべきではありません。Timer代わりにクラスを使用してください!

var timer:Timer = new Timer(20000, 1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, function (e:TimerEvent) {
    gotoAndPlay(3);
});
timer.start();
于 2012-12-28T07:17:19.517 に答える