Manipularea statelor de animație cu Starling

Starling Framework este un API AS3 care imită lista de afișare, cu o singură diferență crucială: folosește noile caracteristici ale Flash Player 11 pentru a face tot conținutul de către GPU. În acest tutorial, veți învăța să adăugați mai multe animații unui sprite folosind Starling Framework. Acesta presupune o înțelegere de bază a folosirii foilor de sprite cu Starling.


Rezultatul final al rezultatelor

Faceți clic aici pentru a vedea demo-ul la care vom lucra. Faceți clic pe stânga sau la dreapta maimuței pentru ao face să meargă în această direcție; observați modul în care se afișează o animație în mișcare atunci când se mișcă și un cadru static când stați în picioare.


Cod inițial

Întregul fișier sursă al demo-ului (atât în ​​starea inițială, cât și în cel final) se află în descărcarea sursei. Cu toate acestea, vom lucra în principal cu un fișier, MonkeySprite.as, așa că aici sunt conținutul, pentru referință:

 pachet import flash.utils.getTimer; import starling.animation.Juggler; importul starling.core.Starling; importul starling.display.MovieClip; import starling.display.Sprite; importul starling.events.Event; importul starling.textures.Texture; importul starling.textures.TextureAtlas; clasa publica MonkeySprite extinde Sprite private var standMovie: MovieClip; // animație în picioare private var mouseX: Number = -1; // locația clicului mouse-ului pe axa x private var lastTime: int; // last onFrame circulație private var movieVector: Vector.; funcția publică MonkeySprite () var atlas: TextureAtlas = Assets.getTextureAtlas (); var standFrame: Vector. = atlas.getTexturi ("monkey_1"); standMovie = nouClipClip (standFrames, 7); standMovie.loop = true; addChild (standMovie); pivotX = această lățime * 0.5; this.addEventListener (Event.ENTER_FRAME, onFrame);  funcția publică onFrame (e: Event): void if (mouseX == -1) retur; // snap if (this.x <= mouseX+5 && this.x >= mouseX-5) this.x = mouseX;  altfel var timeDiff: int = getTimer () - lastTime; lastTime + = timeDiff; dacă (mouseX> this.x) this.x + = timeDiff * .15;  altceva this.x - = timeDiff * .15;  funcția publică moveToPoint (pointX: Number): void mouseX = pointX; lastTime = getTimer (); 

Urmăriți ecranul

Iată URL-urile menționate în videoclip:

  • Cadrul Starling
  • Flash Builder
  • mrdoob Hi-ReS-Statistici
  • Arhiva de artă gratuită a lui Vicki Wenderlich

Vreau mai multe tutoriale Starling?

Spuneți-ne în comentariile!

Cod