嗯,我不是新手,也不是专家,但我发现这很奇怪。我有一个类创建一个图像数组,并在一个ENTER_FRAME监听器函数中旋转它们,一个动画gif 。
精细。
我添加了另一个ENTER_FRAME监听器,它以0.5度的增量旋转对象,直到它达到23.5度,但是我的frameRate减速为爬行。
坏了!
有一次我把一个getTimer()设备放到第一个监听器来测量它的调用速度,我看到旋转监听器没有大约20ms ,旋转监听器处于活动状态时看到200-250ms 。
另外值得注意的是,当旋转侦听器达到23.5度并自行关闭时,frameAdvance侦听器的调用保持不变(非常慢)。
我班上的职能:
private function drawThis():void {
removeEventListener(Event.ENTER_FRAME, wait4images);
for (var i:int = 0; i < shapeLoader.ShapeArr.length; i++) {
addChild(shapeLoader.ShapeArr[i]);
}
//stage.addEventListener(Event.ENTER_FRAME, rotateme);
//like this, it works quickly!
stage.addEventListener(Event.ENTER_FRAME, rotateme);
//like this, it is very slow!
graphics.lineStyle(2,0xff0000)
graphics.moveTo(0, -this.width / 2);
graphics.lineTo(0, this.width / 2);
addEventListener(Event.ENTER_FRAME, frameAdvance,false,0,true);
}
private function rotateme(e:Event):void{
this.rotation += .5;
if (this.rotation == 23.5) {
stage.removeEventListener(Event.ENTER_FRAME, rotateme);
}
}
private function frameAdvance(e:Event):void {
frameNo += 1;
addChild(shapeLoader.ShapeArr[frameNo]);
if (frameNo == 23) {
frameNo = 0;
}
}
有关于这个问题的任何想法/解释/解决方案吗?