Actionscript 使用矢量艺术(.svg)时闪存性能不佳

Actionscript 使用矢量艺术(.svg)时闪存性能不佳,actionscript,flash,vector-graphics,Actionscript,Flash,Vector Graphics,当使用多个矢量艺术作品时,我注意到性能变得相当粗糙,所以我创建了一个简单的测试程序,它可以显示100个相同图形的副本并允许缩放。我使用了我认为相当简单的矢量图像(见下面的链接)。但是,放大或缩小时,fps会大幅下降。我知道缩放需要大量计算,但我有一个高于平均水平的系统(i5 2500k处理器),我希望能够处理这些需求。有什么我遗漏的吗 图片- SVG文件- 包 { 导入flash.display.Sprite; 导入flash.events.MouseEvent; 公共类Main扩展了Sprit

当使用多个矢量艺术作品时,我注意到性能变得相当粗糙,所以我创建了一个简单的测试程序,它可以显示100个相同图形的副本并允许缩放。我使用了我认为相当简单的矢量图像(见下面的链接)。但是,放大或缩小时,fps会大幅下降。我知道缩放需要大量计算,但我有一个高于平均水平的系统(i5 2500k处理器),我希望能够处理这些需求。有什么我遗漏的吗

图片-

SVG文件-

包
{
导入flash.display.Sprite;
导入flash.events.MouseEvent;
公共类Main扩展了Sprite
{
[Embed(source=“../lib/Doctor.svg”)]
私家医生:班级;
私有变量容器:Sprite=newsprite();
公共函数Main():void
{
容器=新精灵();
对于(变量i:int=0;i<10;i++){
对于(var j:int=0;j<10;j++){
变量s:Sprite=新医生();
s、 x=i*20;
容器。addChild(s);
}
}
这个.addChild(容器);
this.addEventListener(MouseEvent.MOUSE_WHEEL,onmouseheel);
}
MouseWheel上的私有函数(事件:MouseEvent):void
{                               
如果(event.delta>0){
container.scaleX+=0.1;
container.scaleY+=0.1;
}否则{
container.scaleX-=0.1;
container.scaleY-=0.1;
}
}
}
}

Flash中的矢量渲染性能相当差-您是否考虑过将其转换为位图,或在精灵上将
cacheAsBitmap
设置为
true
?Marty Wallace是怎么说的。此外,您可以考虑在每个尺度上缓存图像(因此每次只对每个刻度渲染一次)。
package 
{
import flash.display.Sprite;
import flash.events.MouseEvent;

public class Main extends Sprite 
{
    [Embed(source = "../lib/Doctor.svg")]
    private var Doctor:Class;

    private var container:Sprite = new Sprite();

    public function Main():void 
    {
        container = new Sprite();
        for (var i:int = 0; i < 10; i++) {
            for (var j:int = 0; j < 10; j++) {
                var s:Sprite = new Doctor();
                s.x = i * 20;
                container.addChild(s);                  
            }
        }
        this.addChild(container);
        this.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel);
    }

    private function onMouseWheel(event:MouseEvent):void
    {                               
        if (event.delta > 0) {
            container.scaleX += 0.1;
            container.scaleY += 0.1;
        }else {
            container.scaleX -= 0.1;
            container.scaleY -= 0.1;
        }

    }
}

}