<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>댓글 : 이벤트에 뭔가 같이 보내보자 &#8211; 커스텀 이벤트 만들고 사용해보기</title>
	<atom:link href="http://ufx.kr/blog/228/feed" rel="self" type="application/rss+xml" />
	<link>http://ufx.kr/blog/228</link>
	<description>Flash + ActionScript &#38; Design</description>
	<lastBuildDate>Fri, 03 Feb 2012 06:42:18 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>또뱅가 만듬</title>
		<link>http://ufx.kr/blog/228/comment-page-1#comment-6824</link>
		<dc:creator>또뱅</dc:creator>
		<pubDate>Fri, 03 Feb 2012 06:42:18 +0000</pubDate>
		<guid isPermaLink="false">http://ufx.kr/blog/?p=228#comment-6824</guid>
		<description>아 글을 너무 헷갈리게 적었네요 ;; 

그냥 코드를 보여드리겠습니다 ㅠㅠ;;

Main 이구요!

package  
{
	import flash.display.Sprite;
	import flash.events.EventDispatcher;
	import flash.events.MouseEvent;
	/**
	 * ...
	 * @author DDo
	 */
	public class Main extends Sprite
	{
		private var _B = B;
		
		private var _A = A;
		
		//static public var mainCl : Main
		
		public function Main() : void
		{
			//mainCl = this;
			
			_A = new A();
			_B = new B();
			
			this.addChild(_A);
			this.addChild(_B);
			
			parent.addEventListener(MouseEvent.CLICK, clickHandler);
			
		}
		
		private function clickHandler($e : MouseEvent) : void
		{
			//this.dispatchEvent(new ClassEvent(ClassEvent.SEND_OBJECT, this));
			_B.clickHandler();
			
		}
	}
}

A입니다.

package  
{
	import flash.display.Sprite;
	/**
	 * ...
	 * @author DDo
	 */
	public class A extends Sprite
	{
		private var _C : C;
		
		private var _D : D;
		
		
		public function A() : void
		{
			_C = new C();
			_D = new D();
			this.addChild(_C);
			this.addChild(_D);
		}
	}
}

B입니다.

package  
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	/**
	 * ...
	 * @author DDo
	 */
	public class B extends Sprite
	{
		static public var S_B : B;
		
		public function B() : void
		{
			
		}
		
		private function callHandler($e : ClassEvent) : void
		{
			trace($e.currentTarget);
		}
		
		public function clickHandler() : void
		{
			trace(&quot;클릭해서 B로 넘어왔음요 !&quot;);
			this.dispatchEvent(new ClassEvent(ClassEvent.SEND_OBJECT, this));
		}
	}
}

C는 아무 내용도 없이 그냥 빈것 입니다.

D입니다.

package  
{
	import flash.display.Sprite;
	/**
	 * ...
	 * @author DDo
	 */
	public class D extends Sprite
	{
		
		public function D() : void
		{
			trace(B.S_B); // null이 뜹니다!
			
			B.S_B.addEventListener(ClassEvent.SEND_OBJECT, sendObject);
			// null 이므로 읽히지 않습니다...........
		}
		
		private function sendObject($e : ClassEvent) : void
		{
			trace(&quot;D 에서의 반응입니다&quot;);
			trace($e.Obj, $e.currentTarget);
		}
		
	}
}

가르쳐 주신 커스텀 이벤트의 파일 이름은 ClassEvent이구요 

data가 Obj로 변했다는 것 빼곤 모두 똑같습니다.

제가 만든 코드의 전부 입니다

Main.. 그러니까 stage에서 클릭했을때의 이벤트를 B로 보내서

B에서 dispatchEvent를 했고

그 이벤트 내용(?) 을 D에서 받고 싶어서 리스너를 작동 시켰는데 아무 반응이 없길래 

trace로 확인을 해보니 null값이 나왔습니다.;;

음.... null값이 안나와야 읽을 수 있는데 여기서 딱 막혀버렸어요 ..

D에서 받고싶은데 방법을 잘 몰라서 질문했습니다..

윗글은 신경안쓰셔도 됩니다. 글이 길어서 죄송합니다 ㅎㅎ;;</description>
		<content:encoded><![CDATA[<p>아 글을 너무 헷갈리게 적었네요 ;; </p>
<p>그냥 코드를 보여드리겠습니다 ㅠㅠ;;</p>
<p>Main 이구요!</p>
<p>package<br />
{<br />
	import flash.display.Sprite;<br />
	import flash.events.EventDispatcher;<br />
	import flash.events.MouseEvent;<br />
	/**<br />
	 * &#8230;<br />
	 * @author DDo<br />
	 */<br />
	public class Main extends Sprite<br />
	{<br />
		private var _B = B;</p>
<p>		private var _A = A;</p>
<p>		//static public var mainCl : Main</p>
<p>		public function Main() : void<br />
		{<br />
			//mainCl = this;</p>
<p>			_A = new A();<br />
			_B = new B();</p>
<p>			this.addChild(_A);<br />
			this.addChild(_B);</p>
<p>			parent.addEventListener(MouseEvent.CLICK, clickHandler);</p>
<p>		}</p>
<p>		private function clickHandler($e : MouseEvent) : void<br />
		{<br />
			//this.dispatchEvent(new ClassEvent(ClassEvent.SEND_OBJECT, this));<br />
			_B.clickHandler();</p>
<p>		}<br />
	}<br />
}</p>
<p>A입니다.</p>
<p>package<br />
{<br />
	import flash.display.Sprite;<br />
	/**<br />
	 * &#8230;<br />
	 * @author DDo<br />
	 */<br />
	public class A extends Sprite<br />
	{<br />
		private var _C : C;</p>
<p>		private var _D : D;</p>
<p>		public function A() : void<br />
		{<br />
			_C = new C();<br />
			_D = new D();<br />
			this.addChild(_C);<br />
			this.addChild(_D);<br />
		}<br />
	}<br />
}</p>
<p>B입니다.</p>
<p>package<br />
{<br />
	import flash.display.Sprite;<br />
	import flash.events.Event;<br />
	import flash.events.EventDispatcher;<br />
	/**<br />
	 * &#8230;<br />
	 * @author DDo<br />
	 */<br />
	public class B extends Sprite<br />
	{<br />
		static public var S_B : B;</p>
<p>		public function B() : void<br />
		{</p>
<p>		}</p>
<p>		private function callHandler($e : ClassEvent) : void<br />
		{<br />
			trace($e.currentTarget);<br />
		}</p>
<p>		public function clickHandler() : void<br />
		{<br />
			trace(&#8220;클릭해서 B로 넘어왔음요 !&#8221;);<br />
			this.dispatchEvent(new ClassEvent(ClassEvent.SEND_OBJECT, this));<br />
		}<br />
	}<br />
}</p>
<p>C는 아무 내용도 없이 그냥 빈것 입니다.</p>
<p>D입니다.</p>
<p>package<br />
{<br />
	import flash.display.Sprite;<br />
	/**<br />
	 * &#8230;<br />
	 * @author DDo<br />
	 */<br />
	public class D extends Sprite<br />
	{</p>
<p>		public function D() : void<br />
		{<br />
			trace(B.S_B); // null이 뜹니다!</p>
<p>			B.S_B.addEventListener(ClassEvent.SEND_OBJECT, sendObject);<br />
			// null 이므로 읽히지 않습니다&#8230;&#8230;&#8230;..<br />
		}</p>
<p>		private function sendObject($e : ClassEvent) : void<br />
		{<br />
			trace(&#8220;D 에서의 반응입니다&#8221;);<br />
			trace($e.Obj, $e.currentTarget);<br />
		}</p>
<p>	}<br />
}</p>
<p>가르쳐 주신 커스텀 이벤트의 파일 이름은 ClassEvent이구요 </p>
<p>data가 Obj로 변했다는 것 빼곤 모두 똑같습니다.</p>
<p>제가 만든 코드의 전부 입니다</p>
<p>Main.. 그러니까 stage에서 클릭했을때의 이벤트를 B로 보내서</p>
<p>B에서 dispatchEvent를 했고</p>
<p>그 이벤트 내용(?) 을 D에서 받고 싶어서 리스너를 작동 시켰는데 아무 반응이 없길래 </p>
<p>trace로 확인을 해보니 null값이 나왔습니다.;;</p>
<p>음&#8230;. null값이 안나와야 읽을 수 있는데 여기서 딱 막혀버렸어요 ..</p>
<p>D에서 받고싶은데 방법을 잘 몰라서 질문했습니다..</p>
<p>윗글은 신경안쓰셔도 됩니다. 글이 길어서 죄송합니다 ㅎㅎ;;</p>
]]></content:encoded>
	</item>
	<item>
		<title>또뱅가 만듬</title>
		<link>http://ufx.kr/blog/228/comment-page-1#comment-6806</link>
		<dc:creator>또뱅</dc:creator>
		<pubDate>Wed, 01 Feb 2012 06:59:52 +0000</pubDate>
		<guid isPermaLink="false">http://ufx.kr/blog/?p=228#comment-6806</guid>
		<description>자주 질문 드려서 죄송합니다! ㅎㅎ 제가 알고싶은게 너무 많거든요~

3일동안 머리를 짜내다가 결국엔 질문 드립니다!

일단 그림으로 보여드릴게요 

                             Main
                      /        \
                    A           B
                  /   \       /   \
                C      D     E     F
              /                      \
           G                            H 

이렇게 생긴 구조가 있습니다.

Main 에서 A와 B를 addChild

A는 C와 D를 , B는 E와 F를 addChild

C는 G를 F는 H를 addChild했습니다.

Main은 도큐먼트 클래스이고 모든 as파일들은 sprite를 상속받았습니다.

따로 ClassEvent라는 커스텀 이벤트를 만들어 놓았구요 

ClassEvent의 생성자 매개변수로는 (type : String, Obj : Object)로 되어 있습니다.

bubble과 cancelable 는 생략했습니다.

그리고 나머지는 커스텀 이벤트와 똑같습니다.

여기서 Main.as의 코드 내용을 보여드리겠습니다.

public class Main extends Sprite
    {
      private var _A = A;
      private var _B = B;
		
      public var _Dispatch : EventDispatcher = new EventDispatcher();
		
      public function Main() : void
      {
	_A = new A();
	_B = new B();
			
	this.addChild(_A);
	this.addChild(_B);
			
	parent.addEventListener(MouseEvent.CLICK, clickHandler);
       }
		
       private function clickHandler($e : MouseEvent) : void
       {
       _Dispatch.dispatchEvent(new ClassEvent(ClassEvent.SEND_OBJECT, this));
       }
}

글이 짤리네요 ..

A와 B를 addChild하고 클릭했을 때 dispatchEvent를 한 상황입니다.

이떄 매개변수로 넣은 this[Onject Main] 을 H.as에서 받으려면 

어떤식으로 해야되는지 도저히 모르겠습니다.

H.as에서 public var _Dispatch : EventDispatcher = new EventDispatcher();

를 넣고 _Dispatch.addEventListener(ClassEvent.SEND_OBJECT, handler);

뭐 이런식으로 받으려고 해도 

안받아지더라구요 

H.parent.parent.parent. 막 이런식으로 parent를 남발하기가 좀 그래서 

이벤트로 Object를 보내 그걸 바로 받고 싶은데 

잘 모르겠네요 ;;

이것만 해결되면 만들던 게임이 거의 완성이 되는데 

아직 초보라 막코딩을 하는 수준이라........ 

한번 해보고 싶어서 질문 드렸습니다.

수고하세요!</description>
		<content:encoded><![CDATA[<p>자주 질문 드려서 죄송합니다! ㅎㅎ 제가 알고싶은게 너무 많거든요~</p>
<p>3일동안 머리를 짜내다가 결국엔 질문 드립니다!</p>
<p>일단 그림으로 보여드릴게요 </p>
<p>                             Main<br />
                      /        \<br />
                    A           B<br />
                  /   \       /   \<br />
                C      D     E     F<br />
              /                      \<br />
           G                            H </p>
<p>이렇게 생긴 구조가 있습니다.</p>
<p>Main 에서 A와 B를 addChild</p>
<p>A는 C와 D를 , B는 E와 F를 addChild</p>
<p>C는 G를 F는 H를 addChild했습니다.</p>
<p>Main은 도큐먼트 클래스이고 모든 as파일들은 sprite를 상속받았습니다.</p>
<p>따로 ClassEvent라는 커스텀 이벤트를 만들어 놓았구요 </p>
<p>ClassEvent의 생성자 매개변수로는 (type : String, Obj : Object)로 되어 있습니다.</p>
<p>bubble과 cancelable 는 생략했습니다.</p>
<p>그리고 나머지는 커스텀 이벤트와 똑같습니다.</p>
<p>여기서 Main.as의 코드 내용을 보여드리겠습니다.</p>
<p>public class Main extends Sprite<br />
    {<br />
      private var _A = A;<br />
      private var _B = B;</p>
<p>      public var _Dispatch : EventDispatcher = new EventDispatcher();</p>
<p>      public function Main() : void<br />
      {<br />
	_A = new A();<br />
	_B = new B();</p>
<p>	this.addChild(_A);<br />
	this.addChild(_B);</p>
<p>	parent.addEventListener(MouseEvent.CLICK, clickHandler);<br />
       }</p>
<p>       private function clickHandler($e : MouseEvent) : void<br />
       {<br />
       _Dispatch.dispatchEvent(new ClassEvent(ClassEvent.SEND_OBJECT, this));<br />
       }<br />
}</p>
<p>글이 짤리네요 ..</p>
<p>A와 B를 addChild하고 클릭했을 때 dispatchEvent를 한 상황입니다.</p>
<p>이떄 매개변수로 넣은 this[Onject Main] 을 H.as에서 받으려면 </p>
<p>어떤식으로 해야되는지 도저히 모르겠습니다.</p>
<p>H.as에서 public var _Dispatch : EventDispatcher = new EventDispatcher();</p>
<p>를 넣고 _Dispatch.addEventListener(ClassEvent.SEND_OBJECT, handler);</p>
<p>뭐 이런식으로 받으려고 해도 </p>
<p>안받아지더라구요 </p>
<p>H.parent.parent.parent. 막 이런식으로 parent를 남발하기가 좀 그래서 </p>
<p>이벤트로 Object를 보내 그걸 바로 받고 싶은데 </p>
<p>잘 모르겠네요 ;;</p>
<p>이것만 해결되면 만들던 게임이 거의 완성이 되는데 </p>
<p>아직 초보라 막코딩을 하는 수준이라&#8230;&#8230;.. </p>
<p>한번 해보고 싶어서 질문 드렸습니다.</p>
<p>수고하세요!</p>
]]></content:encoded>
	</item>
	<item>
		<title>AS3.0 클래스 구조의 여러가지 상황에서 부모, 자식 객체의 참조 방법 &#124; 세계의끝과 플래시 원더랜드가 만듬</title>
		<link>http://ufx.kr/blog/228/comment-page-1#comment-1209</link>
		<dc:creator>AS3.0 클래스 구조의 여러가지 상황에서 부모, 자식 객체의 참조 방법 &#124; 세계의끝과 플래시 원더랜드</dc:creator>
		<pubDate>Mon, 29 Mar 2010 09:35:13 +0000</pubDate>
		<guid isPermaLink="false">http://ufx.kr/blog/?p=228#comment-1209</guid>
		<description>[...] 됩니다. 커스텀 이벤트는 이 포스트의 범위를 벗어나는 내용이므로 &#8220;이벤트에 뭔가 같이 보내보자 &#8211; 커스텀 이벤트 만들고 사용해보기&#8221; 를 읽어보시기 [...]</description>
		<content:encoded><![CDATA[<p>[...] 됩니다. 커스텀 이벤트는 이 포스트의 범위를 벗어나는 내용이므로 &#8220;이벤트에 뭔가 같이 보내보자 &#8211; 커스텀 이벤트 만들고 사용해보기&#8221; 를 읽어보시기 [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

