Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Мысли - Класс SmoothMover (http://www.flasher.ru/forum/showthread.php?t=107953)

ALiEN_ 12.02.2008 21:20

Мысли - Класс SmoothMover
 
Написал интересный класс SmoothMover, который дополняет собой любой Мувиклип. Добавляет два параметра smoothX, smoothY. Как только значения в параметрах меняется, он плавно двигает Мувик к зананным координатам, по заданной формуле.

Код:

myMovie.x = 0;

SmoothMover.add ( myMovie, "Exponential", "In", 40 );

myMovie.smoothX = 100;

Класс немного похож на TransitionManager, но несколько более прост в обращении.

Меня смущает что внутри класса работает setInterval, который собственно и следит за изменившимися значениями smoothX и smootY.

Может кто-то делал проще?

miramax 12.02.2008 21:48

М... а реализацию можно посмотреть? Как её можно упростить не увидев =).
setInterval что вызывает?

ALiEN_ 12.02.2008 22:21

Код:


package classes.movers
{
       
        import classes.parsers.Easing;
       
        import fl.transitions.Tween;
       
        import flash.utils.*;
       
       
        public class SmoothMover
        {
       
                private var tweenX, tweenY;
               
                private var duration;
               
                private var typeMotion;
               
                private var object;
               
               
                public function SmoothMover ( object, typeMotion, duration )
                {
                       
                        object.smoothX = object.x;
                        object.smoothY = object.y;
                       
                        this.object = object;
                        this.typeMotion = typeMotion;
                        this.duration = duration;
                       
                        tweenX = new Tween ( object, "x", typeMotion, object.x, object.smoothX, duration, false );
                        tweenY = new Tween ( object, "y", typeMotion, object.y, object.smoothY, duration, false );
                       
                        setInterval ( move, 100 );
                       
                }
               
               
                static public function add ( object, t:String, mot:String, duration:Number )
                {
                       
                        if (object.smoothMover == undefined)
                        {
                               
                                object.smoothMover = new SmoothMover ( object, Easing.get ( t, mot ), duration );
                               
                        }
                       
                }

                                                         
                private function move ()
                {
               
                        if ( tweenX.isPlaying )
                        {
                               
                                tweenX.continueTo ( object.smoothX, duration );
                                tweenY.continueTo ( object.smoothY, duration );
                               
                        }
                       
                        else
                        {
                               
                                tweenX = new Tween ( object, "x", typeMotion, object.x, object.smoothX, duration, false );
                                tweenY = new Tween ( object, "y", typeMotion, object.y, object.smoothY, duration, false );
                               
                        }
                               
                }
                                       
    }
       
}


etc 12.02.2008 23:13

Мда, типизировать переменные и возвраты вам явно лень…

Алан 16.02.2008 20:09

А чем плох Tweener или TweenLite?

ALiEN_ 18.02.2008 21:25

Ничем не плох, мой класс легче в использовании. Можно легко задавать налету новые таргет точки. Ну вобщем Твинер тоже супер, но это я сам писал =)))

DoomerSamoiloff 19.02.2008 20:28

вот тут проще и функциональнее

http://code.google.com/p/tweener/

etc 20.02.2008 00:03

Цитата:

Сообщение от DoomerSamoiloff
вот тут проще и функциональнее

http://code.google.com/p/tweener/

Было бы замечательно, если бы хотя бы иногда обращали внимание на посты выше.

Алан 21.02.2008 03:21

) Я имел ввиду что в более-менее насыщенных в плане анимаций проектах как правило приходится иметь дело с секвенциями и последовательностями, это требует централизации кода - что то вроде TweenManager, который слушает события и выполняет все необходимые анимации. Идеи которые кажутся хорошими на практике не всегда дают прирост производительности - знаю по себе )


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

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