AS3: Tween-Klasse und Performance …

Tween-Klasse und Performance ...

Es gibt mittlerweile sehr viele verschiedene Tween-Klassen für die unterschiedlichen Actionscript Versionen. Bei der Entwicklung einer Gallery in Actionscript 3 ist mir aufgefallen, dass die integrierte Tween-Klasse vermutlich nicht zum Tweenen von vielen Objekten geeignet ist. Der folgende kleine Test untermauert meine Vermutung.

import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.utils.Timer;
import flash.events.TimerEvent;
var bmp_arr:Array = new Array();
const segSize:uint = 4;
const rows:uint = 5;
const columns:uint = 100;
for (var i:int=0; i
var yPos:int = i*segSize;
for (var j:int=0; j

var xPos:int = j*segSize;
var bmp_dt:BitmapData = new BitmapData(segSize,segSize,false,0x000000);
var bmp:Bitmap = new Bitmap(bmp_dt);
this.addChild(bmp);
bmp.x = xPos;
bmp.y = yPos;
bmp_arr.push(bmp);
}
}
var counter:int=0;
var myTimer = new Timer(50,0);
myTimer.addEventListener("timer", moveSeg);
myTimer.start();
function moveSeg(e:TimerEvent):void {
if (counter < bmp_arr.length) {
var mySeg:DisplayObject = bmp_arr[counter];
var moveTween:Tween = new Tween(mySeg,"y",Regular.easeOut,mySeg.y,500,3,true);
counter++;
} else {
myTimer.stop();
}
}

Hier werden einfach testweise 4 Zeilen mit je 100 Bitmaps (4×4 Pixel) erzeugt und mithilfe der Tween-Klasse in y-Richtung verschoben.
Die Animation stockt bei einigen Durchgängen auf meinem Notebook, so dass die Bewegung einiger Segmente frühzeitig abgebrochen wird. (Pentium 3 Ghz, 1 GB Ram).

Probiert es selber mal aus. FLA Download
(Diesselbe Bewegung mithilfe eines Listeners ‘Event.ENTER_FRAME’ macht hingegen keine Schwierigkeiten. Vermutlich funktioniert das auch mit anderen Klassen problemlos.)
Schade, dass die mitgelieferte Tween-Klasse offensichtlich nicht sehr performant ist.

Schreibe einen Kommentar