[SOLVED] AS3 eventDispatcher()

Kene egy kis segitseg...

Mar irtam egy kis demot is magamnak, mert nagy projectben nem mukodott a sajat esemenyfigyelo irasa... A lenyeg:
Van egy Flash, amiben as3-at hasznalok...
Az fla-ban be van alitva kezdeti objektumnak a megfelelo objektum jelen esetben a myEventDispatcher.Figyelo ...
Ami el akarok erni, hogy itt amikor rakattintok a kis myBlock nevu MovieClip-re, akkor megjelenjen, hogy megszolalt... Ez elegge el van vonatkoztatva a celtol, mert az meg egy Galeria lesz =) de nekem ott is mar az esemeny elfogasakor vegrehajtodo fuggveny nem hivodik meg...3 file-bol all...
1 .fla, ami egy blank feher semmi...
2 .as, amiben a 2 object van...
Minden mukodik, tehat a benne talalhato MouseEvent.CLICK is mukodik a trace kidobja, meg minden lefut, csak epp a sajat esemenyemet nem tudom elkapni... Hol lhet a gond vele...

A "dispatchEvent" es az "addEventListener" fuggyvenyeket probaltam ugy is, hogy ele irom, hogy "this.", tehat "this.dispatchEvent" es "this.addEventListener"

Figyelo.as:


package myEventDispatcher {
	import flash.events.*;
	import flash.display.Sprite;
	
	public class Figyelo extends Sprite {
		public function Figyelo() {
			var obj:Figyelt = new Figyelt();
			addChild(obj.block);
			trace("addEventListener elott");
			addEventListener(Figyelt.DO_SOUND, this.zajFigyelo);
			trace("addEventListener utan");
		}
		
		private function zajFigyelo(e:Event) {
			trace('Megszolalt');
		}
	}
}

Figyelt.as:


package myEventDispatcher {
	import flash.events.*;
	
	public class Figyelt extends EventDispatcher {
		public static const DO_SOUND:String = "DO_SOUND";
		public var block:myBlock;
		
		public function Figyelt() {
			this.block = new myBlock();
			this.block.addEventListener(MouseEvent.CLICK, onClick);
		}
		
		private function onClick(e:Event) {
			trace("dispatchEvent elott");
			dispatchEvent(new Event(Figyelt.DO_SOUND, true));
			trace("dispatchEvent utan");
		}
	}
}

DebugOutput [trace kimenetek]:


addEventListener elott
addEventListener utan

Amikor rakattintok a myBlock-ra, akkor meg hozzajon ez:


dispatchEvent elott
dispatchEvent utan

Elore is koszi a segitseget =)

Hozzászólások

megoldva...


addEventListener(Figyelt.DO_SOUND, this.zajFigyelo);

replace by


obj.addEventListener(Figyelt.DO_SOUND, this.zajFigyelo);

--
by lightgod