*   >> Lectura Educación Artículos >> science >> programación

Hacer un clon de Space Invaders con PushButton - Explosions

e detector de eventos de colisión tiene referencias a dos Box2DSpatialComponent llama collidee y colisionador. Usted no puede asumir uno u otro pertenece a la misma entidad que el DamageOnContactConponent, por lo tanto tienen que ser evaluados para encontrar el Box2DSpatialComponent que pertenece a la otra entidad involucrada en la colisión.

 public class DamageOnContactConponent extiende EntityComponent {daños public var: int = 0; función pública DamageOnContactConponent () {super (); } Función protegida anulación onAdd (): void {super.onAdd (); owner.eventDispatcher.

addEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); } Protegida anulación función onRemove (): void {super.onRemove (); owner.eventDispatcher.removeEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); } Private function OnCollision (event: CollisionEvent): void {var mySpatial: Box2DSpatialComponent = owner.lookupComponentByType (Box2DSpatialComponent) como Box2DSpatialComponent; var otra: Box2DSpatialComponent = event.collidee === mySpatial event.collider:? event.collidee; var otherHealth: HealthComponent = other.owner.

lookupComponentByType (HealthComponent) como HealthComponent; si (otherHealth! = null) otherHealth.damage (daño); owner.destroy (); }}

El nuevo componente DeathHandlerComponent establece la función onDied ser llamado en caso de un evento HealthComponent.DIED. Dentro de la onDied se crea y se coloca una nueva instancia de la plantilla de explosión. Tenga en cuenta que tratamos de sacar una referencia tanto a un Box2DSpatialComponent y el componente SimpleSpatialComponent con el fin de establecer la posición inicial de la explosión.

Por supuesto, sabemos que la entidad explosión contiene una SimpleSpatialComponent (porque eso es lo que juego en el archivo XML), pero dejamos este código en poner de relieve uno de los problemas con el sistema de diseño de componentes PushButton, que es que los componentes que realizan la misma función son muy a menudo sin relación.

En este asunto, tanto la Box2DSpatialComponent y SimpleSpatialComponent proporcionan una forma de posicionar una entidad en el espacio, la variable real de posición no se especifica como parte de una interfaz común o clase base, que nos obliga a comprobar la existencia de los dos componentes cuando se trata de establecer el posición inicial

 public class DeathHandlerComponent extiende EntityComponent {var PositionReference pública:. PropertyReference = null; función DeathHandle

Page   <<  [1] [2] [3] >>
Copyright © 2008 - 2016 Lectura Educación Artículos,https://lectura.nmjjxx.com All rights reserved.