Flash中可以完全平滑滾動(ActionScript 3)嗎?在下面的測試中,我創建了一個由隨機噪聲組成的位圖,然後定期將它移動到左邊。我沒有在後臺運行繁重的任務。我所尋找的是光滑度,這將是看齊我的Amiga 500從1987年:-)Flash AS3上的平滑滾動
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();
}
}
}
的「渲染代碼」需要< 1毫秒到我的電腦(2.4GHz的蘋果機)上運行,但仍機芯偶爾會卡住一兩幀,使機芯顯得不平整。
Flash中的FPS設置爲30。我試着用「測試電影」和瀏覽器(Chrome)來運行它。 Target是Flash Player 11.2。我也嘗試調用e.updateAfterEvent()強制重繪。我也玩過將延遲和FPS設置爲稍微不同的值,但沒有改進。
這與not smooth scrolling in AS3不同,因爲我已經使用了BitmapData。我也試着用ENTER_FRAME事件來代替計時器,正如在回答這個問題時所建議的那樣,但它沒有幫助。
幀之間的延遲保持在31-34毫秒之間。 – Bemmu
正如其他地方所回答的那樣,您絕對應該使用ENTER_FRAME而不是定時器。但無論哪種方式,垃圾收集器都可能導致這種急躁行爲。如果您還沒有訪問任何分析工具來診斷您的代碼,Adobe Scout非常值得一看(免費)。 – 2013-01-14 23:43:59