什么使得缩放阶段的成本如此之高?

时间:2013-06-25 12:47:27

标签: performance actionscript-3 flash

在网页上将flash对象的大小设置为100%,将舞台缩放设置为show_all

stage.scaleMode = StageScaleMode.SHOW_ALL;

在浏览器上加载页面,更改浏览器窗口大小,因此闪存大小也会改变

给出一个示例程序,让它重绘整个舞台区域的每一帧。 在一些低规格的PC上,运行此闪存将花费90%或更高的CPU资源

package
{
    import flash.display.BlendMode;
    import flash.display.GradientType;
    import flash.display.Graphics;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.geom.Matrix;

    [SWF(width="1200", height="600", frameRate="24")]
    public class Test5 extends Sprite
    {
        public function Test5()
        {

            var g:Graphics = this.graphics;
            g.beginFill(0x4000);
            g.drawRect(0,0,1200,600);
            g.endFill();
            var sp:Sprite = new Sprite();
            sp.alpha = 0.5;
            sp.blendMode = BlendMode.LAYER;
            sp.cacheAsBitmap = false;
            this.addChild(sp);
            g = sp.graphics;
            var matrix:Matrix = new Matrix();
            matrix.createGradientBox(1200,600,0,0,0);
            var count:int = 0;
            this.addEventListener(Event.ENTER_FRAME,function(e:Event):void{
                g.clear();
                g.beginGradientFill(GradientType.RADIAL,[0xff,0],[1,0.3],[count++%256,255],matrix);
                g.drawRect(0,0,1200,600);
            });
        }
    }
}

如果缩小窗口的大小,成本会显着下降。如果将其放大到1920x1080,fps将会下降。

Bitmap也发生了同样的事情,比如将舞台大小的云图片从一侧移动到另一侧。

我的问题是为什么视图大小花费这么多?因为stagewidth和stageheight没有改变,所以我认为flash播放器只缩放最终结果和bitblt.but可能我错了,任何人都可以为我解释?

1 个答案:

答案 0 :(得分:1)

如果你扩大窗口,它必须渲染更多?

渲染图形可能是Flash所做的最耗费处理器的事情,因此增加绘制到屏幕上所需的内容量会损害性能。