Performance 是什么让缩放舞台如此昂贵?

Performance 是什么让缩放舞台如此昂贵?,performance,actionscript-3,flash,Performance,Actionscript 3,Flash,在网页上将flash对象的大小设置为100%,并将舞台比例设置为全部显示 stage.scaleMode = StageScaleMode.SHOW_ALL; 在浏览器上加载页面,更改浏览器窗口大小,使flash大小也随之更改 给出一个示例程序,使其在整个舞台区域内重画每一帧。 在一些低规格的pc上,运行此闪存将花费90%或更高的cpu资源 package { import flash.display.BlendMode; import flash.display.Gradie

在网页上将flash对象的大小设置为100%,并将舞台比例设置为全部显示

stage.scaleMode = StageScaleMode.SHOW_ALL;
在浏览器上加载页面,更改浏览器窗口大小,使flash大小也随之更改

给出一个示例程序,使其在整个舞台区域内重画每一帧。 在一些低规格的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将降低

同样的事情也发生在位图上,比如将舞台大小的云图从一边移到另一边


我的问题是为什么视图大小花费这么多?因为stagewidth和stageheight没有改变,所以我认为flash播放器只缩放最终结果和bitblt。但也许我错了,有人能为我解释一下吗?

如果放大窗口,它必须渲染更多


渲染图形可能是Flash所做的处理器最密集的事情,因此增加它需要在屏幕上绘制的内容量会影响性能。

如果放大窗口,它必须渲染更多的内容


渲染图形可能是Flash所做的处理器最密集的事情,因此增加需要在屏幕上绘制的内容量会影响性能。

但内容是相同的,对吗?如果播放器总是绘制原始大小并缩放,我认为成本不会这么高difference@user2003548您误解了渲染的工作原理。简单地考虑一下,如果它更大,那么就有更多的东西可以画。它可能是同一个对象,但选择屏幕上哪些像素需要重新着色的过程是个问题。好吧,也许有一天我会编写一个类似的应用程序,也许我会理解这背后的渲染机制。但内容是一样的,对吧?如果玩家总是绘制原始大小并缩放它,我认为成本不会这么高difference@user2003548您误解了渲染的工作原理。简单地考虑一下,如果它更大,那么就有更多的东西可以画。它可能是同一个对象,但选择屏幕上哪些像素需要重新着色的过程是个问题。好吧,也许有一天我会编写一个类似的应用程序,也许我会理解这背后的渲染机制。