I made a custom event and I can’t listen for it for some odd reason… When I do this:
this.addEventListener(Event.EnemyEvent, enemySpawned);
I get this error:
“1119: Access of possibly undefined property EnemyEvent through a reference with static type Class.”
Any ideas why? Here is the custom event code:
package events {
import flash.events.Event;
import collision_objects.enemies.Enemy;
public class EnemyEvent extends Event {
public static const SPAWN:String = "spawn";
private var _enemy:Enemy;
public function EnemyEvent(type:String, bubbles:Boolean, cancelable:Boolean, enemy:Enemy) {
super(type, bubbles, cancelable);
_enemy = enemy;
}
public function get enemy():Enemy {
return _enemy;
}
}
}
Here is the class where the event is dispatched: (see the end)
package generators {
import flash.display.Stage;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.events.EventDispatcher;
import interfaces.IPausable;
import collision_objects.enemies.*;
import events.EnemyEvent;
public class EnemyGenerator extends EventDispatcher implements IPausable {
private var _stage:Stage;
private var _spawnTimer:Timer;
public function EnemyGenerator(stageRef:Stage):void {
_stage = stageRef;
setupSpawn();
}
private function setupSpawn():void {
var randomDelay:Number = Math.random() * 5000 + 1;
_spawnTimer = new Timer(randomDelay, 1);
_spawnTimer.addEventListener(TimerEvent.TIMER, spawnEnemy);
_spawnTimer.start();
}
private function spawnEnemy(e:TimerEvent):void {
_spawnTimer.removeEventListener(TimerEvent.TIMER, spawnEnemy);
_spawnTimer = null;
var randomY:Number = Math.random() * _stage.stageHeight;
var enemy:Enemy = new Stinger(_stage, randomY);
this.dispatchEvent(new EnemyEvent(EnemyEvent.SPAWN, true, false, enemy));
setupSpawn();
}
...
And here is the class where I am trying to add the event listener:
package {
import flash.display.Stage;
import flash.events.Event;
import events.EnemyEvent;
import collision_objects.CollisionObject;
import collision_objects.ships.*;
import collision_objects.enemies.*;
import generators.*;
public class ProximityController {
private var _stage:Stage;
private var _hero:CollisionObject;
private var _enemiesArray:Vector.<CollisionObject>;
private var _enemyBulletsArray:Vector.<CollisionObject>;
private var _herobulletsArray:Vector.<CollisionObject>;
private var _enemyGenerator:EnemyGenerator;
public function ProximityController(stageRef:Stage) {
_stage = stageRef;
_enemiesArray = new Vector.<CollisionObject>();
_enemyBulletsArray = new Vector.<CollisionObject>();
_herobulletsArray = new Vector.<CollisionObject>();
_enemyGenerator = new EnemyGenerator(_stage);
_hero = new Hero(_stage);
_stage.addEventListener(Event.ENTER_FRAME, run, false, 0, true);
this.addEventListener(Event.EnemyEvent, enemySpawned);
}