我發佈了這個到Adobe論壇,但我不期望在那裏有一個好的答案。我正在尋找某人在Flash中完成遊戲並遇到同樣問題的幫助。Internet Explorer閃存性能
步驟來重現我的問題:
在Flash中創建簡單點的DisplayObject
dot.graphics.beginFill(color); dot.graphics.drawCircle(0, 0, 2); dot.graphics.endFill();
畫點爲位圖多次框架結合
bitmapData.draw(dot, null, null, "normal", null, _smoothing);
- 測試傳幀率瀏覽器,Win32上的Flash插件版本
期待:
幀率在大多數情況下
密切觀察:
我使用Flash10b.ocx看到IE7下的幀率下降25%(10.0.22)和50使用Flash10c.ocx(10.0.32)降低幀率。 FireFox,Safari和Mac OSX下的PLugins不會出現相同的減速。
請幫助:
我想獲得一個性能問題,我在Internet Explorer中看到求助/確認。 Adobe和Flash社區在互聯網上很棒,但我很驚訝地發現沒有關於這方面的信息,只有一些關於10.0.32和10.0.22上的電影播放的報道。
我的猜測是,在IE瀏覽器插件傳遞繪圖調用Win32,這是緩慢的。
我的解決辦法是:
不是每次都借鑑採用抽籤的位圖,緩存平局調用位圖和使用CopyPixels
。當我這樣做時,各瀏覽器的性能是相同的,在10%以內。
bitmapData.copyPixels(dot.bitmapData,dot.bitmapData.rect,new Point(dot.x,dot.y),null,null,true);
環路我使用:
function enterFrame(e:Event) {
bitmap.lock();
for (var i:int=0;i<particles.length;i++) {
draw(particle[i]);
}
bitmap.unlock();
}
說明有關其他可能的「已知」的問題,我想更多地瞭解:
- 在IE瀏覽器的內存使用我的應用程序是據報道要小得多(在Flash Player中爲33MB,在IE下爲16MB)。
- 在IE下,內存頁錯誤超過10k /秒,而在Flash播放器中則沒有。
- 在IE下,stage.invalidate似乎會導致性能問題。
- 在IE下,在位圖上放置一個模糊濾鏡會在Flash播放器中具有更大的性能。
啊,這是着名的Flash「剪切」缺陷,自從它首次發佈以來一直存在於該播放器中。沒有解決方案或解決方法。 – 2009-11-13 11:07:49