PDA

Просмотр полной версии : Мысли - Класс SmoothMover


ALiEN_
12.02.2008, 21:20
Написал интересный класс 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
вот тут проще и функциональнее

http://code.google.com/p/tweener/
Было бы замечательно, если бы хотя бы иногда обращали внимание на посты выше.

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