Katso esittely
ladata lähdekoodin
TAKAISIN TUTORIAL INDEX
Viime opetusohjelmassa loimme AnimationController automaattisesti päivittää kuva näkyy SpriteRenderComponent, jolloin animoitu kuva. Nyt jatkamme KeyboardController komponentti, jotta se signaalin AnimationController muuttaa nykyistä animaatio, joka antaa meille mahdollisuuden näyttää eri animaatioita perustuu näppäimistöä, kuten käynnissä animaation nuoli painetaan.
AnimationController edellyttää kahta asiaa on voitava vaihtaa animaatioita kysyntään.
Ensimmäinen on nimi tapahtuma, joka lähetetään, kun animaatio on vaihdettava. Tämä on asetettu kautta changeAnimationEvent omaisuutta.
EntityFactory.as
Animation.changeAnimationEvent = "PlayerAnimation";Toinen on viittaus ominaisuus, joka kuvaa nimi animaatio, joka tulisi pelata. Tämä on get toiminto, me lisäävät KeyboardController komponentti.
Animation.currentAnimationReference = uusi PropertyReference ("@ Input.currentAnimation");
Mitä tapahtuu nyt on, että kun animaatio näytetään pitää vaihtaa tapahtuma on lähetetty jonka yhteisö, tässä tapauksessa nimellä "PlayerAnimation". Ei ole tietoa liittyvät tähän tapahtumaan: AnimationController käyttää laukaiseminen tapahtuman signaalin pyytää animaation että pitäisi näkyä läpi kiinteistön viittaus osoitettu changeAnimationEvent omaisuutta.
lähettäminen "PlayerAnimation" tapahtuma ja antaa nimi halutun animaatio on työtä KeyboardController. CurrentAnimation toiminto tarjoaa tavan AnimationController lukea nimi nykyisen animaation.
KeyboardController.as
julkinen tehtävä saada currentAnimation (): String {paluu animaatio;}onTick toiminto päivitetään tallentaa viimeinen suuntaan soitin (edessä muuttuja), onko sen liikkuessa tai ei (kanssa idle muuttuja), sekä lähettää tapahtuman, jolloin animaatio olisi muutettava.
julkinen Ohitustoiminto onTick (tickRate: Numero): void {var asema: Point = owner.getProperty (PositionReference); jos (InputManager.isKeyDown (InputKey.RIGHT)) {jos (! päin || tyhjäkäynnillä) {päin = true; tyhjäkäynnillä = false; animaatio = "RunRight"; owner.eventDispatcher.dispatchEvent (uusi tapahtuma (AnimationEventName)); } XMovement + = nopeus * tickRate; kun taas (xMovement> = 1) {position.x + = 1; xMovement - = 1; }} Else if (InputManager.isKeyDown (InputKey.LEFT)) {jos (edessä || tyhjäkäynnillä) {päin = false; tyhjäkäynnillä = false; animaatio = "RunLeft"; owner.eventDispatcher.dispatchEvent (uusi tapahtuma (AnimationEventName)); } XMovement - = nopeus * tickRate; kun taas (xMovement if (! idle) {tyhjäkäynnillä = true, animaatio = päin? "IdleRight": "IdleLeft" owner.eventDispatcher.dispatchEvent (uusi tapahtuma (AnimationEventName));} if (InputManager.
isKeyDown (InputKey.DOWN) ) {yMovement + = Nopeus * tickRate, kun taas (yMovement>