*   >> Lecture Éducation Articles >> science >> la programmation

Faire un clone de Space Invaders avec PushButton - Explosions

ent de collision a des références à deux Box2DSpatialComponent appelé collidee et collisionneur. Vous ne pouvez pas supposer un ou l'autre appartient à la même entité que le DamageOnContactConponent, afin que les deux doivent être vérifiés pour trouver le Box2DSpatialComponent qui appartient à l'autre entité impliquée dans la collision.

 public class DamageOnContactConponent étend EntityComponent {dommages public var: int = 0; fonction publique DamageOnContactConponent () {super (); } Fonction protégée override onAdd (): void {super.onAdd (); owner.eventDispatcher.

addEventListener (CollisionEvent.COLLISION_EVENT, onCollision); } Protected override fonction onRemove (): void {super.onRemove (); owner.eventDispatcher.removeEventListener (CollisionEvent.COLLISION_EVENT, onCollision); } Private function onCollision (event: CollisionEvent): void {var mySpatial: Box2DSpatialComponent = owner.lookupComponentByType (Box2DSpatialComponent) que Box2DSpatialComponent; var autre: Box2DSpatialComponent = event.collidee === mySpatial event.collider:? event.collidee; var otherHealth: HealthComponent = other.owner.

lookupComponentByType (HealthComponent) que HealthComponent; si (otherHealth! = null) otherHealth.damage (dommages); (owner.destroy); }}

Le nouveau composant de DeathHandlerComponent définit la fonction onDied d'être appelé dans le cas d'un événement HealthComponent.DIED. A l'intérieur du onDied une nouvelle instance du modèle d'explosion est créé et placé. Notez que nous essayons de sortir une référence à la fois une composante Box2DSpatialComponent et SimpleSpatialComponent afin de définir la position initiale de l'explosion.

Bien sûr, nous savons que l'entité d'explosion contient un SimpleSpatialComponent (parce que ce que nous jeu dans le fichier XML), mais je suis parti ce code pour mettre en évidence l'un des problèmes avec le système de conception de composant PushButton, qui est que les composants qui exécutent la même fonction sont très souvent sans rapport.

Dans cette affaire, tant la Box2DSpatialComponent et SimpleSpatialComponent fournissent un moyen pour positionner l'entité dans l'espace, la variable de position réelle est pas spécifié dans le cadre d'une interface commune ou de la classe de base, nous obligeant à vérifier l'existence de ces deux composantes en essayant de définir la position initiale

 DeathHandlerComponent public class étend EntityComponent {PositionReference public var:. PropertyReference = null; DeathHand

Page   <<  [1] [2] [3] >>
Copyright © 2008 - 2016 Lecture Éducation Articles,https://lecture.nmjjxx.com All rights reserved.