kald fra AS-added instance til Document Class

Se felisan's brugerprofil
Indmeldt: 24-05-2007
Indlæg: 220
Er offline

hej alle.

Jeg kunne godt tænke mig at høre, om dette er den rette fremgangsmåde.
Jeg har en .as-fil som dynamisk adder min Slide1 til stage:

package {	
	import flash.display.MovieClip;
 
	public class HKInfoContent extends MovieClip {
 
		private var _slideHolder;
		private var _slide1:Slide1;
 
		public function HKInfoContent() {
			init();
		}
 
		private function init():void {
			trace("function init");
			setupSlides();
		}
 
		private function setupSlides():void {
			_slideHolder = new MovieClip();
			_slide1 = new Slide1();
			_slideHolder.addChild(_slide1);
			addChild(_slideHolder);
		}
 
		public function slideEnded():void {
			trace("slideEnded!");
		}
	}
}

min Slide1 indeholder en animation, og i sidste frame denne kode:

stop();
(root as Object).slideEnded();

ved at gøre min funktion slideEnded public kan jeg fange den.
så det virker.. men er det den "rigtige" måde at gøre det på?

på forhånd tak Smile

mvh
felisan

Kommentarer

Se mat's brugerprofil
Indmeldt: 04-07-2009
Indlæg: 78
Er offline

Kan du ikke bare dispatche en event?

Se felisan's brugerprofil
Indmeldt: 24-05-2007
Indlæg: 220
Er offline

mener du sådan her:

Doc:

package {
 
	import caurina.transitions.Tweener;
	import flash.display.MovieClip;
	import flash.events.Event;
	import MonsterDebugger;
 
	public class HKInfoContent extends MovieClip {
 
		private var _md:MonsterDebugger;
		private var _slideHolder;
		private var _slide1:Slide1;
		private var _slide2:Slide2;
		private var _slide3:Slide3;
		private var _slide4:Slide4;
 
		public function HKInfoContent() {
			init();
		}
 
		private function init():void {
			trace("function init");
			_md = new MonsterDebugger(this);
			setupSlides();
			addEventListener("TestEvent", slideEnded, false, 0, true);
		}
 
		private function setupSlides():void {
			_slideHolder = new MovieClip();
			_slide1 = new Slide1();
			_slide1.x = _slide1.y = 30;
			_slideHolder.addChild(_slide1);
			_slide2 = new Slide2();
			_slide2.x = _slide2.y = 60;
			_slideHolder.addChild(_slide2);
			_slide3 = new Slide3();
			_slide3.x = _slide3.y = 90;
			_slideHolder.addChild(_slide3);
			_slide4 = new Slide4();
			_slide4.x = _slide4.y = 120;
			_slideHolder.addChild(_slide4);			
			addChild(_slideHolder);
		}
 
		public function slideEnded(e:Event):void {
			trace("slideEnded!");
		}
	}
}

og i Slide1:

stop();
trace("ended");
dispatchEvent(new Event("TestEvent"));

for i ovenstående kode får jeg kun ended tracet ud, slideEnded traces ikke ud?

Confused

mvh
felisan

Se mat's brugerprofil
Indmeldt: 04-07-2009
Indlæg: 78
Er offline

Du skal add'e din event listener til det objekt der dispatcher den (eller sætte bubbles til true).

Se felisan's brugerprofil
Indmeldt: 24-05-2007
Indlæg: 220
Er offline

for fanden, ja!
det giver mening Smile

prøver lige.
tak!

mvh
felisan

Se felisan's brugerprofil
Indmeldt: 24-05-2007
Indlæg: 220
Er offline

hey mat.

tak for hjælpen, jeg fik løst mit problem, jeg har opsummeret lidt her:
http://www.campjohn.dk/wp/?p=1386

tak for hjælpen og god weekend
felisan