ActionScript Class Communication - PullRequest
       2

ActionScript Class Communication

0 голосов
/ 16 марта 2012

Я новичок в ActionScript, и у меня есть вопрос.

Я в классе "Враг". Этот класс имеет функцию "столкновения". Как я могу общаться с количеством жизней, оставленных игроком из этого класса? Спасибо.

1 Ответ

2 голосов
/ 16 марта 2012

Попробуйте что-то вроде этого:

public class Game extends MovieClip {
   public var enemy:Enemy; //enemy can be a timeline instance
   public var player:Player //can also be a timeline instance
   public function Game() {
        super();
        //for this to work enemy must exist on frame one of the Game MC
        //and stay around for the rest of the MC's lifespan
        enemy.addEventListener(EnemyEvent.COLLISION, onEnemyCollision);
   }
   protected function onEnemyCollision(e:EnemyEvent):void {
      e.player.lives--;
   }
}

//the enemy!!!
public class Enemy extends Sprite {
   //I actually don't understand why this is a function on enemy.
   //I wouldn't have designed it this way.
   //What is calling it?
   public function collision(withPlayer:Player):void {
      dispatchEvent(new EnemyEvent(EnemyEvent.COLLISION, withPlayer));
   }
}

//the player
public class Player extends Sprite {
   public var lives:int=10;
}

//the enemy event
public class EnemyEvent extends Event {
   public static const COLLISION:String = 'Big badda boom.';//Fifth Element reference
   public var player:Player;
   public function EnemyEvent(type:String, player:Player) {
       super(type, true, true);
       this.player = player;
   }
   public function clone():Event {
      new EnemyEvent(type, player);
   }
}

Если вы не хотите, чтобы игрок и враг находились на первом кадре, ознакомьтесь с этой статьей, чтобы подробнее узнать, как этот материал работает в глубине: http://www.developria.com/2010/04/combining-the-timeline-with-oo.html. Или вы можете написать код, чтобы добавить их вручную, но это слишком похоже на работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...