Flash internet explorer闪存性能

Flash internet explorer闪存性能,flash,internet-explorer,bitmapdata,frame-rate,Flash,Internet Explorer,Bitmapdata,Frame Rate,我在Adobe论坛上发布了这篇文章,但我不希望得到一个好的答案。我正在寻求帮助,从某人谁做了一个游戏的flash,并遇到了同样的问题 重现问题的步骤: 在flash中创建简单的点显示对象 dot.graphics.beginFill( color); dot.graphics.drawCircle( 0, 0, 2 ); dot.graphics.endFill(); 在一帧中多次绘制点位图 bitmapData.draw( dot, null, null, "normal", null, _

我在Adobe论坛上发布了这篇文章,但我不希望得到一个好的答案。我正在寻求帮助,从某人谁做了一个游戏的flash,并遇到了同样的问题

重现问题的步骤:

在flash中创建简单的点显示对象

dot.graphics.beginFill( color);
dot.graphics.drawCircle( 0, 0, 2 );
dot.graphics.endFill();
在一帧中多次绘制点位图

bitmapData.draw( dot, null, null, "normal", null, _smoothing );
在Win32上结合浏览器、flash插件版本测试帧速率 期望:

在大多数情况下,帧速率都很接近

观察到:

我发现在使用Flash10b.ocx10.0.22的IE7下,帧速率下降了25%,而使用Flash10c.ocx10.0.32时,帧速率下降了50%。FireFox、Safari和MacOSX下的插件不会表现出同样的减速

请帮忙:

我想获得Internet Explorer中出现的性能问题的帮助/确认。Adobe和Flash社区在互联网上非常棒,但我惊讶地发现没有关于这方面的信息,只有一些关于10.0.32和10.0.22上电影播放的报告

我的猜测是,IE flash插件正在将draw调用传递到Win32,这很慢

我的解决办法是:

与每次使用draw在位图上绘制不同,缓存对位图的绘制调用并使用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下,我的应用程序的内存使用量要小得多,通常在flashplayer中为33MB,而在IE下为16MB。 在IE下,内存页错误超过10k/秒,而在flash播放器中则没有。 在IE的舞台下,invalidate似乎会导致性能挂接问题。 在IE下,在位图上放置模糊过滤器对性能的影响比在flash播放器中更大。
Flash插件在不同平台/浏览器/次要版本/调试器等中的性能差异很大。除了为目标受众的最小公分母编码外,您几乎无法抵消这些差异

也就是说,bitmapData.draw速度很慢,因为它在每次调用时都会强制重新光栅化矢量数据。在后台,Flash也使用这种方法,但它跟踪屏幕的脏区域,因此它调用它的次数少于在调试器中启用“显示重绘区域”以直观地查看此内容


bitmapData.copyPixels解决方案是手动光栅实现的正确解决方案。这几乎是在Flash中获得高性能复杂动画的唯一机制。

感谢您的确认。我认为锁的作用是帮助flash最小化重画。尽管flash应用程序以接近每秒60帧的速度运行,我还是看到了口吃


而不是让人们怀疑我是否把每件事都编对了。我修改了一些全新的tweenlite性能示例代码,使之成为大约150像素/秒的线性运动。这突出了口吃,让人们看到。示例位于

啊,这就是著名的剪闪虫,自从它第一次出现以来就一直存在于播放器中。没有解决方案或解决办法。