Flash 性能:设置直线多边形与曲线形状的动画

Flash 性能:设置直线多边形与曲线形状的动画,flash,performance,animation,polygon,vector-graphics,Flash,Performance,Animation,Polygon,Vector Graphics,我正在探索将Flash作为实现大量动画应用程序的一个选项,我有一个概念性的问题 我的问题是:在Adobe Flash中,设置弯曲形状的动画是否比设置直多边形的动画更需要处理器?还是他们的表现差不多?(假设任何形状都非常简单,每个形状有3到10个顶点/锚定点,并且有20到1000个形状。动画包括形状的拉伸、挤压、旋转和平移。) 能够在没有明显减速的情况下同时使用这两种多边形是很好的,但如果只使用直多边形速度快得多,那也没关系。但在我计划一些事情之前,我需要知道哪一个通常是正确的 (我试着在互联网上

我正在探索将Flash作为实现大量动画应用程序的一个选项,我有一个概念性的问题

我的问题是:在Adobe Flash中,设置弯曲形状的动画是否比设置直多边形的动画更需要处理器?还是他们的表现差不多?(假设任何形状都非常简单,每个形状有3到10个顶点/锚定点,并且有20到1000个形状。动画包括形状的拉伸、挤压、旋转和平移。)

能够在没有明显减速的情况下同时使用这两种多边形是很好的,但如果只使用直多边形速度快得多,那也没关系。但在我计划一些事情之前,我需要知道哪一个通常是正确的

(我试着在互联网上查找是否有人问过这个问题,但我能找到的最接近的东西是光栅图形与矢量图形,这不是我要说的:我的两种选择都使用矢量图形。)


谢谢你抽出时间

您可以编写某种基准测试。莱塞:

stage.frameRate = 600;
var itmz:Array = new Array();
for(var i:int = 0; i < 1000; i++){
    var item:Shape = new Shape;
    [...Draw...]
    item.cacheAsBitmap = false;
    itmz.push(item);
    addChild(item);
}

var timer:Number= getTimer();

addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(e:Event):void{
    trace(getTimer() - timer);
    timer = getTimer();
    for(var i:int = 0, l:int = itmz.length; i < l; i++){
        itmz[i].x = Math.random() * 800;
        itmz[i].y = Math.random() * 800;
    }
}
stage.frameRate=600;
var itmz:Array=new Array();
对于(变量i:int=0;i<1000;i++){
变量项:形状=新形状;
[…画…]
item.cacheAsBitmap=false;
itmz.推力(项目);
addChild(项目);
}
变量计时器:Number=getTimer();
addEventListener(Event.ENTER_FRAME,onEnterFrame);
函数一帧间(e:事件):无效{
跟踪(getTimer()-timer);
timer=getTimer();
对于(变量i:int=0,l:int=itmz.length;i
这样或多或少可以用来测试速度。然后比较这些数字,如果你有足够的形状来注意到一个相当大的滞后(因此你每秒只有不到2帧),那么最好是比较一帧之间的时间-越小越好。重复不同的形状,而不是向下的结果


编辑:在辩论层面上,我认为这取决于你试图实现的目标。例如,如果您试图用几条直线替换每条曲线(例如:圆变成28边多边形),那么我猜曲线速度更快。但是,用square content square替换圆角正方形应该会更快,尽管我相信这不会是一个明显的变化。除非所有的点都在不断变形,否则位图缓存可能会消除它们之间的所有差异。

您可以编写某种基准测试。莱塞:

stage.frameRate = 600;
var itmz:Array = new Array();
for(var i:int = 0; i < 1000; i++){
    var item:Shape = new Shape;
    [...Draw...]
    item.cacheAsBitmap = false;
    itmz.push(item);
    addChild(item);
}

var timer:Number= getTimer();

addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(e:Event):void{
    trace(getTimer() - timer);
    timer = getTimer();
    for(var i:int = 0, l:int = itmz.length; i < l; i++){
        itmz[i].x = Math.random() * 800;
        itmz[i].y = Math.random() * 800;
    }
}
stage.frameRate=600;
var itmz:Array=new Array();
对于(变量i:int=0;i<1000;i++){
变量项:形状=新形状;
[…画…]
item.cacheAsBitmap=false;
itmz.推力(项目);
addChild(项目);
}
变量计时器:Number=getTimer();
addEventListener(Event.ENTER_FRAME,onEnterFrame);
函数一帧间(e:事件):无效{
跟踪(getTimer()-timer);
timer=getTimer();
对于(变量i:int=0,l:int=itmz.length;i
这样或多或少可以用来测试速度。然后比较这些数字,如果你有足够的形状来注意到一个相当大的滞后(因此你每秒只有不到2帧),那么最好是比较一帧之间的时间-越小越好。重复不同的形状,而不是向下的结果


编辑:在辩论层面上,我认为这取决于你试图实现的目标。例如,如果您试图用几条直线替换每条曲线(例如:圆变成28边多边形),那么我猜曲线速度更快。但是,用square content square替换圆角正方形应该会更快,尽管我相信这不会是一个明显的变化。除非所有的点都在不断变形,否则位图缓存有可能消除它们之间的所有差异。

有趣的问题。直线和曲线之间的区别在于,在第二种情况下,还有一个虚拟点(使曲线深度的点控制…注意,我简化了…),但无论如何,GPU贪婪的资源是跟踪,因为浮点数值,特别是抗锯齿。 小数点后的数字越少,曲线就越漂亮、越精确。对于性能,最常用的技术是根据形状的大小或其曲线级别自动调整细节级别。
这是一个有趣的问题。直线和曲线之间的区别在于,在第二种情况下,还有一个虚拟点(使曲线深度的点控制…注意,我简化了…),但无论如何,GPU贪婪的资源是跟踪,因为浮点数值,特别是抗锯齿。 小数点后的数字越少,曲线就越漂亮、越精确。对于性能,最常用的技术是根据形状的大小或其曲线级别自动调整细节级别。 正规军