0

ブール値を切り替えるKeyboardEventがあります。trueの場合、FR変数は-2 / frameを10の下限に落とし、falseの場合、+ 2 / frameを60の上限に上げます。上下に問題なく動作しますが、「 stage.frameRate = FR; " ENTER_FRAME関数に接続して再生すると、ウィンドウの制御がフリーズします。アニメーションは引き続き再生されますが、Ctrl-Alt-Delを使用しない限りオフにできません。

1.なぜこれが起こっているのですか?

2.frameRateをフレームごとに変更することはできますか?

3.はいの場合、どのように?

4

2 に答える 2

1

ええと、その場でフレームレートをいじるのが良いことかどうかはわかりません。あなたは何をしようとしているのですか?もしかしたらもっと良い方法があるかもしれません...

これは完全な推測ですが、おそらくフレーム レートをステージに設定すると、バックグラウンドで「何か」が初期化されます。次に、フレームごとに発生するため、フレームごとに初期化を試み、ロックアップします。


Timer オブジェクトの使用例を含めるように回答を更新します。

import flash.utils.Timer;
import flash.events.TimerEvent;

// the timer takes in milliseconds, so for 30 frames/second, you would have a frame tick at every 1000 / 30, or 33.333ms
var tickSpeed:int = 1000 / 30;
var frameTick:Timer = new Timer(tickSpeed, 0);


function enterFrameListener(inputEvent:Timer):void {
    // this method will run on every timer tick
}
frameTick.addEventListener(TimerEvent.TIMER, enterFrameListener);

// can change the tick speed of the timer like so (setting it to 1000 means 1 frame tick every second)
frameTick.delay = 1000;

// according to the api doc however, a tickspeed of less then 20ms is not recommended
// 20ms would be equal to 60 fps

それをタイマーにオフロードすることで、他のオブジェクトが同時に異なるタイマーの影響を受ける可能性があるという別の利点を使用して、全体的なフレームレートをいじる必要はありません。Timer クラスには、それ自体にもいくつかの便利なメソッドがあります: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html

于 2013-02-15T01:53:12.550 に答える
0

すべてのフレームでフレーム レートを設定しようとしているため、アプリがフリーズしていると思いますENTER_FRAME。セクションでフレーム レートを確認することをお勧めします。フレーム レートが目的のフレーム レートから上下する場合は、フレーム レートを FR に設定する必要があります。

これを試してみてください。

于 2013-02-15T06:32:56.737 に答える