У меня проблемы с пониманием, как отправлять события и где их отлавливать. в настоящее время у меня есть класс документа waterMain и еще один класс под названием gunner. мой waterMain создает объект наводчика и добавляет его как ребенка, в моем наводчике есть функция firebullet, в которой я посылаю
dispatchEvent (new Event ("bulletFired"));
и из моего класса WaterMain я делаю
addEventListener("bulletFired", bulletFiredHandler);
private function bulletFiredHandler(e:Event):void
{
hudMenu.reduceBullet();
}
hudMenu является переменной класса документа waterMain, однако, похоже, ничего не происходит. класс waterMain не перехватывает отправленное событие?
package
{
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
/**
* ...
* @author ...
*/
public class Gunner extends MovieClip
{
private var _stageRef:Stage;
public var barrel:MovieClip;
public var point:MovieClip;
public var _hudMenu:HUD;
public function Gunner(stageRef:Stage)
{
//trace("current rotation" + barrel.rotation);
//barrel.rotation = -90;
_stageRef = stageRef;
addEventListener(Event.ENTER_FRAME, rotateTurret);
_stageRef.addEventListener(MouseEvent.MOUSE_DOWN, fireBullet);
private function rotateTurret(evt:Event):void
{
//calculations, distance, angle etc
var a:Number = _stageRef.mouseX - x;
var b:Number = _stageRef.mouseY - y;
var angRad:Number = Math.atan2(b, a);
var angDeg:Number = (angRad * 180 / Math.PI);
//trace(angDeg );
barrel.rotation = (angDeg);
}
private function fireBullet(mouseEvt:MouseEvent):void
{
dispatchEvent(new Event("bulletFired"));
_stageRef.addChildAt(new Bullet(_stageRef,x, y , new Point(mouseEvt.stageX, mouseEvt.stageY), _koiArray, _lionArray), 1);
_stageRef.addChild(_stageRef.addChild(this));
}
}
}