*   >> Læs Uddannelse artikler >> science >> programming

Realiseringen af ​​et Space Invaders klon med Trykknap - Explosions

nponent, så begge skal kontrolleres for at finde den Box2DSpatialComponent, der hører til den anden enhed er involveret i kollisionen.

 public class DamageOnContactConponent udvider EntityComponent {public Var skader: int = 0; offentlig funktion DamageOnContactConponent () {super (); } Beskyttet overstyringsfunktionen onAdd (): void {super.onAdd (); owner.eventDispatcher.addEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); } Beskyttet overstyringsfunktionen onRemove (): void {super.onRemove (); owner.eventDispatcher.removeEventListener (CollisionEvent.

COLLISION_EVENT, OnCollision); } Private funktion OnCollision (hændelse: CollisionEvent): void {var mySpatial: Box2DSpatialComponent = owner.lookupComponentByType (Box2DSpatialComponent) som Box2DSpatialComponent; Var andet: Box2DSpatialComponent = event.collidee === mySpatial event.collider:? event.collidee; Var otherHealth: HealthComponent = other.owner.lookupComponentByType (HealthComponent) som HealthComponent; hvis (otherHealth = null!) otherHealth.damage (skade); owner.

destroy (); }}

Den nye DeathHandlerComponent komponent sætter onDied funktionen til at blive kaldt i tilfælde af en HealthComponent.DIED begivenhed. Inde i onDied en ny instans af eksplosion skabelonen er oprettet og placeret. Bemærk, at vi forsøger at trække en henvisning til både en Box2DSpatialComponent og SimpleSpatialComponent komponent for at indstille den oprindelige position af eksplosionen.

Selvfølgelig ved vi, at eksplosionen enhed indeholder en SimpleSpatialComponent (fordi det er det, vi vildt det i XML-filen), men jeg forlod denne kode i at fremhæve en af ​​de problemer med trykknap komponent design-system, som er, at komponenter, der udfører den samme funktion er ganske ofte uafhængige.

I dette tilfælde både Box2DSpatialComponent og SimpleSpatialComponent giver en måde at positionere en enhed i rummet, er den faktiske position variablen ikke angivet som en del af en fælles grænseflade eller base klasse, tvinger os til at tjekke for eksistensen af ​​begge komponenter, når de forsøger at sætte udgangsposition

 public class DeathHandlerComponent udvider EntityComponent {offentlige var PositionReference:. PropertyReference = null; offentlig funktion DeathHandlerComponent () {super (); } Beskyttet overstyringsfunktionen onAdd (): void {super.onAdd (); owner.

eventDispatcher.addEventListener (HealthComponent.DIED, onDied); } Beskyttet overstyringsfunktionen onRemove (): void {super.onRemove (); ow

Page   <<  [1] [2] [3] >>
Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.