Страница 1 из 1

Плавность движения

Добавлено: 02 дек 2012, 00:54
Garch
Мне надо сделать чтобы при наведении мыши в определенную часть сцены фон плавно, но быстро двигался, есть код

Код: Выделить всё

 stage.addEventListener(Event.ENTER_FRAME, mover); function mover(event:Event):void{                        if(mouseX>=(stage.stageWidth-200)&&mouseX<=stage.stageWidth){                fon.x-=10;            }        } 
Но плавности не видно) Не подскажите как сделать?

Re: Плавность движения

Добавлено: 02 дек 2012, 01:49
sanych_dv
1. Увеличить frameRate ролика.
2. Использовать событие TIMER (у этого класса более гибкие настройки), а не ENTER_FRAME.

Код: Выделить всё

 package {    import flash.display.Sprite;    import flash.events.*;    import flash.utils.Timer;         public class Main extends Sprite     {                private var timer:Timer = new Timer(20);        private var bg:Bg;                public function Main():void         {        stage ? init() : addEventListener(Event.ADDED_TO_STAGE, init);        }                private function init(e:Event = null):void         {            removeEventListener(Event.ADDED_TO_STAGE, init);                        stage.frameRate = 60;             bg = new Bg;            addChild(bg);            timer.addEventListener(TimerEvent.TIMER, onTimer);            timer.start();        }                private function onTimer(e:TimerEvent):void         {            mouseX >= stage.stageWidth - 200 && mouseX <= stage.stageWidth ? bg.x += 10 : null;        }            }    } 

Re: Плавность движения

Добавлено: 02 дек 2012, 11:40
Garch
sanych_dv писал(а):1. Увеличить frameRate ролика.
2. Использовать событие TIMER (у этого класса более гибкие настройки), а не ENTER_FRAME.

Код: Выделить всё

 package {    import flash.display.Sprite;    import flash.events.*;    import flash.utils.Timer;         public class Main extends Sprite     {                private var timer:Timer = new Timer(20);        private var bg:Bg;                public function Main():void         {        stage ? init() : addEventListener(Event.ADDED_TO_STAGE, init);        }                private function init(e:Event = null):void         {            removeEventListener(Event.ADDED_TO_STAGE, init);                        stage.frameRate = 60;             bg = new Bg;            addChild(bg);            timer.addEventListener(TimerEvent.TIMER, onTimer);            timer.start();        }                private function onTimer(e:TimerEvent):void         {            mouseX >= stage.stageWidth - 200 && mouseX <= stage.stageWidth ? bg.x += 10 : null;        }            }    } 

а есть еще какой нибудь более плавный способ? В полноэкранном режиме этот способ все ранво с подергиваниями((

Re: Плавность движения

Добавлено: 02 дек 2012, 12:38
sanych_dv
Включить аппаратное ускорение )

вы в отладке посмотрите, держит ли ролик установленный вами FPS. И оптимизируйте графику.

Re: Плавность движения

Добавлено: 02 дек 2012, 13:13
Garch
sanych_dv писал(а):Включить аппаратное ускорение )

вы в отладке посмотрите, держит ли ролик установленный вами FPS. И оптимизируйте графику.

эмм... а как его включить?

Re: Плавность движения

Добавлено: 02 дек 2012, 13:27
Alazaur
Garch, лучше начните с проверки второго)