Flash (ActionScript 3) で完全にスムーズなスクロールを行うことは可能ですか? 次のテストでは、ランダム ノイズで構成されるビットマップを作成し、それを定期的に左に移動しています。バックグラウンドで実行されている重いタスクはありません。私が探しているのは、1987年のAmiga 500と同等の滑らかさです:-)
package {
import flash.display.*;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class Game extends Sprite {
var noiseBitmap;
public function Game() {
var noiseBitmapData = new BitmapData(stage.stageWidth * 3, stage.stageHeight);
noiseBitmapData.noise(0, 0, 255, 7, true);
noiseBitmap = new Bitmap(noiseBitmapData);
addChild(noiseBitmap);
var t = new Timer(1000/30, 999999);
t.addEventListener("timer", function (e:TimerEvent) {
noiseBitmap.x--;
});
t.start();
}
}
}
「レンダリング コード」を私のコンピューター (2.4 GHz Mac) で実行するのに 1 ミリ秒未満かかりますが、それでも動きが 1 ~ 2 フレーム停止し、動きがぎくしゃくしたように見えます。
FPS は Flash で 30 に設定されています。「テストムービー」とブラウザ(Chrome)の両方で実行してみました。ターゲットは Flash Player 11.2 です。また、再描画を強制するために e.updateAfterEvent() を呼び出してみました。また、遅延と FPS をわずかに異なる値に設定して遊んでみましたが、改善はありません。
これは、既に BitmapData を使用しているため、AS3 での非スムーズ スクロールとは異なります。また、その質問への返信で提案されているように、タイマーの代わりに ENTER_FRAME イベントを使用してみましたが、役に立ちませんでした。