Кто сталкивался с глюками картинки при программной анимации в браузере 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
А у меня и не в хроме лагает...
и у меня дергается
такое подозрение, что оптимизация здесь бессильна, посмотрел периодичность вызовов 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();
}
}
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.