PDA

Просмотр полной версии : Мерцание при программной анимации в Chrome


RonEXI
27.02.2014, 21:18
Кто сталкивался с глюками картинки при программной анимации в браузере Google Chrome?
Вот простой пример, обьект движется вперёд: http://ronexi.com/test_mov_1.html
( on enter frame, x+=2)
В браузерах с плагином от Adobe движение ровное, а в хроме ( где стоит их PepperFlash по умолчанию) обьект движется с каким-то мерцанием и подлагиванием.

Посоветуйте как это можно вылечить?

Пробовал менять wmode на все возможные, перегонять картинку в bitmap data, менять частоту кадров, не помогает.

Akopalipsis
27.02.2014, 22:06
А у меня и не в хроме лагает...

silin
27.02.2014, 22:54
и у меня дергается
такое подозрение, что оптимизация здесь бессильна, посмотрел периодичность вызовов enterFrame
private function this_enterFrame(e:Event):void
{

obj.x += 2;
var t1:Number = getTimer();
log += (t1-t0) + ", ";
t0 = t1;
if (obj.x > 100)
{
Console.log(log);
this.removeEventListener(Event.ENTER_FRAME, this_enterFrame);
}

}
//44, 12, 2, 27, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 16, 17, 17, 17, 17, 17, 17, 17, 25, 17, 0, 1, 8, 24, 9, 18, 23, 9, 18, 23, 9, 17, 24, 9, 17, 24, 9, 17, 24, 9,

если такой замер корректен, то это полная ж., какая тут может быть плавность..

Добавлено через 11 минут
хотя вот такой вариант может и сработать
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.getTimer;

[SWF (frameRate="120")]
public class Main extends Sprite
{
private var obj:Sprite = new Sprite();
private var t0:Number;
private var speed:Number = 0.1;
public function Main():void
{

obj.graphics.beginFill(0x804000);
obj.graphics.drawRect(0, 0, 60, 120);
addChild(obj);

this.addEventListener(Event.ENTER_FRAME, this_enterFrame);
t0 = getTimer();

}



private function this_enterFrame(e:Event):void
{
var t:Number = getTimer() - t0;
//obj.x = int(t * speed);
obj.x = Math.round(20 * t * speed) / 20;
if (obj.x > 1000)
{
t0 = getTimer();
}

}

}

}