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