GTween od Grant’a Skinner’a

Grant Skinner pokusił się o opublikowanie własnego silnika do animacji o nazwie GTween. Z założenia jest on silnikiem prostym szybkim i maksymalnie elastycznym. Całość silnika zajmuje jedynie 4.5kb, co jest niezłym wynikiem, choć przykładowo TweenLite zajmuje jedynie 3kb. Wydajnościowo porównywalny jest z silnikiem TweenLite ( animacji 1500 obiektów na poziomie 25fps ) co stawia go w czołówce najwydajniejszych silników do animacji.

Używanie silnika jest bardzo prostę – wystarczy szybki rzut oka na dokumentację. Aby wykonać animację tworzymy obiekt klasy GTween, któremu podajmy odpowiednie parametry.

var myTween:GTween = new GTween(mySprite, 2, {x:200});

myTween.addEventListener(Event.COMPLETE, handleTweenComplete);

Czasem może to być niewygodne (dla mnie świetnym pomysłem jest stosowanie statycznych metod jak np. w TweenLite czy Tweener). Ma to jednak swoje zalety, które uwidaczniają się przy trzech zaimplementowanych metodach sekwencjonowania animacji. Przykładowo można zdefiniować kolejną animację ustawiając parametr nextTween wcześniejszej.

var myTween1:GTween = new GTween(target1,3,{x:20});

var myTween2:GTween = new GTween(target2,0,{x:200});

myTween1.addChild(myTween2,true); // true = synch durations

var myTween3:GTween = new GTween(target3,3,{y:50});

myTween3.delay = 2;

myTween1.nextTween = myTween3;

Zaimplementowana została również animacja za pomocą proxy. Brzmi to tajemniczo ale w rzeczywistości jest bardzo proste. Animację obiektu możemy wykonywać przez zwyczajne definiowanie wartości danego parametry. Nie odwołujemy się jednak do samego obiektu, lecz do parametru proxy obiektu GTween góry został dla animowanego obiektu zdefiniowany.

var myTween:GTween = new GTween(mySprite,1);

stage.addEventListener(MouseEvent.CLICK,handleClick);

function handleClick(evt:MouseEvent):void {

   myTween.proxy.x = mouseX;

   myTween.proxy.y = mouseY;

}

Ciekawa jest również właściwość animowania rotacji smartRotate - obraca ona obiekt w stronę gdzie animacja będzie trwała najkrócej. Duży nacisk został również położony na zarządzanie zasobami i usuwanie wszystkich zbędnych operacji obciążających procesor.

Aktualna wersja to public beta - więc mogą jeszcze pojawiać się niedociągnięcia. Oczywiście projekt jest open-source’owy.

This entry was posted in ActionScript. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

3 Comments

  1. Posted 19/08/2008 at 20:27 | Permalink

    Powoli wychodzi na to, że każdy szanujący się developer powinien napisać swój własny silnik do animacji… :)

  2. Posted 20/08/2008 at 09:29 | Permalink

    tak jak w php musisz miec swoj framework, a zarzadzanie sesjami to juz obowiazkowo heh

  3. Posted 20/08/2008 at 16:33 | Permalink

    Faktycznie, tych silników jest już trochę – ale konkurencja zawsze wychodzi na dobre. Ja osobiście jestem zwolennikiem TweenLite jest lekki – bardzo wydajny, a bazowanie na statycznych metodach czyni go bardzo wygodnym w obsłudze.

    Pamiętam, że kiedyś Paweł pokazywał animację, w której Tweener radził sobie lepiej (TweenLite nieco przycinał) ale nie napiszę dokładnie o co tam chodziło – może Paweł się wypowie. W każdym razie do tej pory nie natknąłem się na jakieś bugi.

Post a Comment

You must be logged in to post a comment.