*   >> Leitura Educação Artigos >> science >> programação

Fazendo um clone de Space Invaders com PushButton - Explosions

ssumir uma ou outra pertence à mesma entidade que o DamageOnContactConponent, então ambos têm de ser verificadas para encontrar o Box2DSpatialComponent que pertence à outra entidade envolvida na colisão.

 classe pública estende DamageOnContactConponent EntityComponent {var danos público: int = 0; função pública DamageOnContactConponent () {super (); } Function protected override OnAdd (): void {super.onAdd (); owner.eventDispatcher.addEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); } Protected override função onRemove (): void {super.onRemove (); owner.

eventDispatcher.removeEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); } Function privado OnCollision (event: CollisionEvent): void {var mySpatial: Box2DSpatialComponent = owner.lookupComponentByType (Box2DSpatialComponent) como Box2DSpatialComponent; var outro: Box2DSpatialComponent = event.collidee === mySpatial event.collider:? event.collidee; var otherHealth: HealthComponent = other.owner.lookupComponentByType (HealthComponent) como HealthComponent; if (otherHealth! = null) otherHealth.damage (dano); owner.

destroy (); }}

O novo componente DeathHandlerComponent define a função onDied a ser chamado em caso de um evento HealthComponent.DIED. Dentro do onDied uma nova instância do modelo de explosão é criado e posicionado. Observe que nós tentamos e puxe uma referência tanto um componente Box2DSpatialComponent e SimpleSpatialComponent, a fim de definir a posição inicial da explosão.

Claro que sabemos que a entidade explosão contém um SimpleSpatialComponent (porque isso é o que jogo no arquivo XML), mas eu deixei este codigo em destaque um dos problemas com o sistema de design de componente PushButton, o que é que os componentes que executam a mesma função são, muitas vezes não relacionados.

Neste caso, tanto a Box2DSpatialComponent e SimpleSpatialComponent fornecer uma maneira de posicionar uma entidade no espaço, a variável posição real não é especificado como parte de um interface comum ou classe base, forçando-nos a verificar a existência de ambos os componentes ao tentar definir o posição inicial

 classe pública estende DeathHandlerComponent EntityComponent {var PositionReference público:. PropertyReference = null; DeathHandlerComponent função pública () {super (); } Function protected override OnAdd (): void {super.onAdd (); owner.eventDispatcher.

addEventListener (HealthComponent.DIED, onDied); } Protected override função onRemove (): void {super.onRemove

Page   <<  [1] [2] [3] >>
Copyright © 2008 - 2016 Leitura Educação Artigos,https://artigos.nmjjxx.com All rights reserved.