*   >> läser Utbildning artiklar >> science >> programming

Att göra en Space Invaders klon med tryckknapp - Explosions

för att hitta den Box2DSpatialComponent som tillhör annan enhet som deltagit i kollisionen. Omdömen
 public class DamageOnContactConponent utökar EntityComponent {public var skador: int = 0; public function DamageOnContactConponent () {super (); } Skyddade override funktion onAdd (): void {super.onAdd (); owner.eventDispatcher.addEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); } Skyddade override funktion onRemove (): void {super.onRemove (); owner.eventDispatcher.removeEventListener (CollisionEvent.

COLLISION_EVENT, OnCollision); } Private function OnCollision (event: CollisionEvent): void {var mySpatial: Box2DSpatialComponent = owner.lookupComponentByType (Box2DSpatialComponent) som Box2DSpatialComponent; var andra: Box2DSpatialComponent = event.collidee === mySpatial event.collider: event.collidee; var otherHealth: HealthComponent = other.owner.lookupComponentByType (HealthComponent) såsom HealthComponent; if (otherHealth = null!) otherHealth.damage (skada); owner.

destroy (); }}

Den nya DeathHandlerComponent komponenten sätter onDied funktion som ska kallas i händelse av en HealthComponent.DIED händelse. Inuti onDied en ny instans av explosions mallen skapas och positionerad. Lägg märke till att vi försöker och dra ut en hänvisning till både en Box2DSpatialComponent och SimpleSpatialComponent komponent för att ställa in utgångsläget för explosionen.

Naturligtvis vet vi att explosionen enheten innehåller en SimpleSpatialComponent (eftersom det är vad vi spelet det i XML-filen), men jag lämnade den här koden i att lyfta fram en av de frågor med tryckknapp komponentdesign systemet, vilket är att komponenter som utför samma funktion är ofta orelaterade.

I det här fallet både Box2DSpatialComponent och SimpleSpatialComponent ett sätt att positionera en enhet i rymden, är det verkliga läget variabeln inte anges som en del av ett gemensamt gränssnitt eller basklass, tvingar oss att kontrollera för existensen av såväl komponenter när man försöker ställa in utgångsläge

 public class DeathHandlerComponent utökar EntityComponent {public var PositionReference. PropertyReference = null; public function DeathHandlerComponent () {super (); } Skyddade override funktion onAdd (): void {super.onAdd (); owner.eventDispatcher.

addEventListener (HealthComponent.DIED, onDied); } Skyddade override funktion onRemove (): void {super.onRemove (); owner.eventDispatcher.removeEventListener (HealthComponent.DIED, onDied); } Skyddad funktion onDied (even

Page   <<  [1] [2] [3] >>
Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.