私はAS3プロジェクトに取り組んでいます。タイマーを使用して色を切り替えて停止させるエフェクトの1つについては、停止します。この機能は以下の通りです。タイマー効率
//global variable
private var valueAnimationTimer:Timer = new Timer(50);
//constructor
valueAnimationTimer.addEventListener(TimerEvent.TIMER, scrollUp);
//function
private function scrollUp(e:TimerEvent):void
{
var i:int = e.currentTarget.currentCount as int;
if (i < 10)
{
if (colored){
if (i % 2 == 0){
ChangeColor(ico, flickerColor);
}
else{
ico.transform.colorTransform = new ColorTransform();
}
}
tfValue.y -= 7.5;
}
else
{
RemoveFilters(ico);
tfValue.y = ico.height/2;
e.currentTarget.reset();
RemoveSprite(tfValue);
colored = false;
}
}
各キャラクター(オブジェクト)にはこの機能の独自のバージョンがあり、異なる時間に(怪我をしたり被害を受けたときなどに)発生します。リスナーはコンストラクターに一度追加され、キャラクターが死んでステージから削除されたときにのみリスナーが削除されます。ここでの問題は、タイマーが少なくとも3文字で使用された後で、フレームレートが低下し始めることです。関数が呼び出されるたびに、フレームレートが低くなります。
タイマーが停止し、リスナーが1回だけ追加されてスタックに過負荷がかからない場合、リスナーが実際に使用された後にフレームレートが低下するのはなぜですか?それは少しの時間だけ永遠に実行されませんが、それは何度も繰り返されます。フレームレートが低下すると、プログラム全体が遅れて最終的にフリーズします。私はこの
タイマーリスナーを1時間
を繰り返し分タイマーはゲームでタイミングを処理するため、かなり非効率的な方法です。何かを更新する必要がある場合は、すべてのサイクルをチェックする単一のゲームループを持つ方がはるかに優れています。タイマーを使用すると、ゲームサイクルで複数のリスナーが発砲することがあります。このように多くのキャラクターが設定されていると、プレーヤーに負担がかかります。私は参照してください – xxbbcc
。私は別のフォーラムスレッドを見ていて、誰かがAS3は50-100 +オブジェクトやそのイベントを簡単に処理できると言っていたので、すべてが思いやりのあるものになると思いました。ありがとう:) –
Event.ENTER_FRAMEリスナーはどれくらい効率的ですか? AS3はそれをより効率的に処理できますか? –