Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Плавное движение изображения (не работает у меня) (http://www.flasher.ru/forum/showthread.php?t=161040)

shimra 20.07.2011 00:33

Плавное движение изображения (не работает у меня)
 
Вечер добрый , друзья.
Делаю банер.В котором ну прям все все все должно двигаться так как хочет заказчик.
И вот проблема - нужно двигать текст примерно со скорость движения фона и примерно в том же направлении.
Попробовал реализовать на первом слайде :
http://rk-software.pl/banner3/
Заказчик очень не доволен: говорит очень плохо!!видны дерганья и рывки в движении текста.
Код такой :

Код AS3:

private function showtextforfirst(evt:TimerEvent):void
                {
                                                Text1_mc=new Text1();
                                                holder4_mc.addChild(Text1_mc);
                                                holder4_mc.x = 60;
                                                holder4_mc.y = 20;
                                                TransitionManager.start(holder4_mc,{type:Fade, direction:Transition.IN,
                        duration:1.5,easing:None.easeNone});
                                                startMoveTextTimer();
              }
 
private function startMoveTextTimer():void
                {
                        if(timer!=null)
                                timer.reset();
                        timer=new Timer(1000,1);
                        timer.addEventListener(TimerEvent.TIMER,movetext);
                        timer.start();
                }
 
 
                private function movetext(evt:TimerEvent):void
                {
                        Tweener.addTween(Text1_mc, {x:400, y:500,scaleX:3, scaleY: 3, time:200, transition:"linear"});
                }

!!Помогите кто чем может !!

coffee2espresso 20.07.2011 08:41

UpdateAfterEvent тебе в помощь.

Vektor 20.07.2011 10:46

Так сойдет?
Код AS3:

package {
        import flash.display.*;
        import flash.events.*;
        import flash.utils.Timer;
        import flash.text.TextField;
        public class Move extends MovieClip {
                private var _mcNew:MovieClip=new MovieClip;
                public function Move() {
                        addChild(_mcNew);
                        _mcNew.x=100;
                        _mcNew.y=100;
                        var field:TextField=new TextField();
                        field.text="Привет";
                        _mcNew.addChild(field);
                        var timer:Timer=new Timer(1);
                        timer.addEventListener(TimerEvent.TIMER,onTimer);
                        timer.start();
                }
                public function onTimer(evt:TimerEvent):void {
                        _mcNew.x++;
                        evt.updateAfterEvent();
                }
        }
}

З.Ы -Лучше в Timer() не выставлять больших значений на движения от1-10 думаю достаточно в зависимости от скорости.

fish_r 20.07.2011 11:26

Таймер ниже 16 реально не может работать.
Привяжите анимацию не к таймеру, а к кадрам, или, для начала, попробуйте поднять fps.
Или воспользуйтесь сторонними плагинами - твинами, напр. GreenSock.

MXPain 20.07.2011 12:06

сколько у вас частота кадров стоит?

shimra 20.07.2011 12:38

Привет Vektor! Спасибо за код!!!
Возможно я не разобрался но по прежнему сохраняется видимость движения ((
изменил некоторые параметры под себя и движение вновь пошло с заскоками:
Код AS3:

package  {
 
        import flash.display.MovieClip;
        import flash.display.*;
        import flash.events.*;
        import flash.utils.Timer;
        import flash.text.TextField;
 
        public class main extends MovieClip {
 
                private var _mcNew:MovieClip=new MovieClip;
 
                public function main()
                {
                        addChild(_mcNew);
                        _mcNew.x=100;
                        _mcNew.y=100;
                        var field:TextField=new TextField();
                        field.text="Привет";
                        _mcNew.addChild(field);
                        var timer:Timer=new Timer(100);
                        timer.addEventListener(TimerEvent.TIMER,onTimer);
                        timer.start();
                }
                public function onTimer(evt:TimerEvent):void {
                        _mcNew.x++;
                        _mcNew.y++;
                        evt.updateAfterEvent();
                }
        }
 
}

И это при том что шрифт текст мал.

arkadattx 20.07.2011 12:47

Обновление у вас идет с частотой 10fps. Рекомендуемый минимум - 24

fljot 20.07.2011 12:48

Чтобы текст двигался плавнее, нужно выставить ему antialiasing for animation

shimra 20.07.2011 12:48

Цитата:

Сообщение от fish_r (Сообщение 1013109)
Таймер ниже 16 реально не может работать.
Привяжите анимацию не к таймеру, а к кадрам, или, для начала, попробуйте поднять fps.
Или воспользуйтесь сторонними плагинами - твинами, напр. GreenSock.

Здравствуйте!
Исходя из вашей ссылки мой таймер получает переменные delay= 1000 миллисекунд(= 1 секунда) и repeat = 1 раз. Я не сам до этого дошел подсмотрел где-то в интернете.Теперь только так и пользуюсь создаю таймер и константы для него :
Код AS3:

                private const SPEED:int=10;
                private const SPEEDTEXT:int=4;
                ...........................................
                ...........................................
                                        private function startDisplayTimerHide():void
                {
                        if(timer!=null)
                                timer.reset();
                        timer=new Timer(SPEED*1000,1);
                        timer.addEventListener(TimerEvent.TIMER,hideImageStart();
                        timer.start();
                }

А насчет твинов что только не использовал :
Код AS3:

                private function movetext(evt:TimerEvent):void
                {
                        Tweener.addTween(Text1_mc, {x:400, y:500,scaleX:3, scaleY: 3, time:200, transition:"linear"});
                        //TweenPlugin.activate([TransformMatrixPlugin]);
                        //TweenPlugin.activate([TransformMatrixPlugin]);
                        //TweenMax.to(Text1_mc, 10, {x:280, y:350, roundProps:["x","y"]});
                        //TweenMax.to(Text1_mc, 300, {transformMatrix:{x:280, y:350, scaleX:3, scaleY:3}});
                        //TweenMax.to(Text1_mc, 600, {transformMatrix:{a:4.3, b:0.04, c:0.02, d:4.12, tx:280}});
                        //TweenMax.to(Text1_mc, 13.75, {transformMatrix:{x:280, y:350, scaleX:4.1, scaleY:4.1, skewX:0}});
                        //TweenMax.to(Text1_mc,600, {y:1000,scaleX:4, scaleY:4});
                }

Все что в комментах тоже не плавно двигается.И если я правильно понял Courina(Tweener) это тоже сторонний класс.
Если честно я в тупике!

shimra 20.07.2011 12:50

Цитата:

Сообщение от MXPain (Сообщение 1013111)
сколько у вас частота кадров стоит?

19 fps

Добавлено через 2 минуты
Цитата:

Сообщение от fljot (Сообщение 1013118)
Чтобы текст двигался плавнее, нужно выставить ему antialiasing for animation

А это где ? Я поставил smoothing а antialiasing for animation не нашёл

Добавлено через 4 минуты
понял где antialiasing for animation но у меня текст в битмап.(( когда был статик текст вообще жесть была


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

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