Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Мерцание при программной анимации в Chrome (http://www.flasher.ru/forum/showthread.php?t=206753)

RonEXI 27.02.2014 21:18

Мерцание при программной анимации в Chrome
 
Кто сталкивался с глюками картинки при программной анимации в браузере 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
Код AS3:

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 минут
хотя вот такой вариант может и сработать
Код AS3:

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();
                        }
 
                }
 
        }
 
}



Часовой пояс GMT +4, время: 16:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.