<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>overfloweblog &#187; actionScript</title>
	<atom:link href="http://overfloweb.com/blog/index.php/archives/category/web-development/flash-action-script-3/feed" rel="self" type="application/rss+xml" />
	<link>http://overfloweb.com/blog</link>
	<description>are you driving me crazy?</description>
	<lastBuildDate>Sun, 29 Aug 2010 08:15:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>http://www.hyundaigenesis.com</title>
		<link>http://overfloweb.com/blog/index.php/archives/118</link>
		<comments>http://overfloweb.com/blog/index.php/archives/118#comments</comments>
		<pubDate>Tue, 03 Feb 2009 06:25:45 +0000</pubDate>
		<dc:creator>overflow</dc:creator>
				<category><![CDATA[actionScript]]></category>
		<category><![CDATA[study]]></category>

		<guid isPermaLink="false">http://overfloweb.com/blog/?p=118</guid>
		<description><![CDATA[이번에 화제가 된 슈퍼볼 중간 TV 광고를 현대자동차가 차지했다길래 구경하다가 방문한 현대제네시스 글로벌 사이트. 근래에 봤던 플래쉬 아트웍중에서 가장 근사(graceful?)하다. http://www.hyundaigenesis.com 엔지니어가 누군지는 모르지만 안봐도 알것같은 그들의 노가다와 그 결과물에 브라보! 아래영상은 그 비싸다는 슈퍼볼 중간광고에 방영된 현대 제네시스 TV광고.  ]]></description>
			<content:encoded><![CDATA[<p>이번에 화제가 된 슈퍼볼 중간 TV 광고를 현대자동차가 차지했다길래 구경하다가 방문한 현대제네시스 글로벌 사이트.</p>
<p>근래에 봤던 플래쉬 아트웍중에서 가장 근사(graceful?)하다.</p>
<p><a href="http://www.hyundaigenesis.com">http://www.hyundaigenesis.com</a></p>
<p>엔지니어가 누군지는 모르지만 안봐도 알것같은 그들의 노가다와 그 결과물에 브라보!</p>
<p>아래영상은 그 비싸다는 슈퍼볼 중간광고에 방영된 현대 제네시스 TV광고.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/2l5nPyAKQoo&amp;hl=ko&amp;fs=1" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/2l5nPyAKQoo&amp;hl=ko&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
 </p>
]]></content:encoded>
			<wfw:commentRss>http://overfloweb.com/blog/index.php/archives/118/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>addEventListener 의 이벤트핸들러로 변수 전달하기</title>
		<link>http://overfloweb.com/blog/index.php/archives/116</link>
		<comments>http://overfloweb.com/blog/index.php/archives/116#comments</comments>
		<pubDate>Mon, 02 Feb 2009 05:30:45 +0000</pubDate>
		<dc:creator>overflow</dc:creator>
				<category><![CDATA[actionScript]]></category>
		<category><![CDATA[study]]></category>

		<guid isPermaLink="false">http://overfloweb.com/blog/?p=116</guid>
		<description><![CDATA[Pass variable with addEventListener addEventListener 의 이벤트핸들러로 변수 전달하기   Knorcedger I want to pass a variable to a function called by an addEventListener, but when i try to do it, it doesnt pass the event itself to the function. For example, i have item.addEventListener(ContextMenuEvent.MENU_ITEM_S ELECT, me); and&#8230; private function me(event:ContextMenuEvent):void { and i try [...]]]></description>
			<content:encoded><![CDATA[<h2>Pass variable with addEventListener</h2>
<h2><span style="color: #0000ff;">addEventListener 의 이벤트핸들러로 변수 전달하기</span></h2>
<p> </p>
<p><span style="font-family: Verdana;"><span><strong>Knorcedger</strong></span></span></p>
<p>I want to pass a variable to a function called by an addEventListener, but when i try to do it, it doesnt pass the event itself to the function. For example, i have</p>
<p>item.addEventListener(ContextMenuEvent.MENU_ITEM_S ELECT, me);</p>
<p>and&#8230;</p>
<p>private function me(event:ContextMenuEvent):void {<br />
and i try something like that, but it says that it expected 2 variables</p>
<p>item.addEventListener(ContextMenuEvent.MENU_ITEM_S ELECT, me(fire));</p>
<p>and&#8230;</p>
<p>private function me(event:ContextMenuEvent, fire:Number):void {<br />
so, i try this one</p>
<p>item.addEventListener(ContextMenuEvent.MENU_ITEM_S ELECT, me(ContextMenuEvent, fire));</p>
<p>and&#8230;</p>
<p>private function me(event:ContextMenuEvent, fire:Number):void {<br />
but is says &#8220;Type Coercion failed: cannot convert flash.events::ContextMenuEvent$ to flash.events.ContextMenuEvent.&#8221;</p>
<p>I dont know what else to try. Can somebody please help me?</p>
<p><span style="font-family: Verdana;"><span style="color: #0000ff;">이번에는 addEventListener 의 이벤트핸들러로 변수를 전달할수 있을까 하는 의문이 들었다.<br />
역시나 나와 똑같은 고민을 하는 친구는 이세상에 없을리가 없다.<br />
나처럼 여러가지로 시도해보고 모두 안된다는걸 알았을 것이다;<br />
과연 명쾌한 해답은 있을까?</span></span></p>
<p> </p>
<hr /><span style="font-family: Verdana;">  </p>
<p><span><strong>Dazzer</strong></span><br />
addEventListener doesn&#8217;t allow you to do so.</p>
<p>When you put &#8216;me&#8217; into the addEventListener call, me.type == function. </p>
<p>me is a function.<br />
me() is not a function. it is a reference. Understand?</p>
<p>So you can&#8217;t do that, since it is expecting a Function as its parameter.</p>
<p>So, to answer your question, you need to create a custom Event. And the perfect article is here</p>
<p>http://www.darronschall.com/weblog/archives/000191.cfm</p>
<p><span><span style="color: #0000ff;">이벤트핸들러는 함수가 아니라 참조일뿐이라고 잘난척하고있다. 그걸 누가 모르나? -_-;<br />
완벽한 방법이라며 걸어둔 링크를 따라가보면, 커스텀이벤트를 따로 만들고 그 이벤트에는 파라메터를 포함하면서 이벤트만 전달하는 방식이다.</span></span><span style="color: #0000ff;"><br />
</span> <span><span style="color: #0000ff;">이방법은 크게 와닿지가 않는다.</span></span></p>
<p><span><strong>iandrio</strong></span><br />
The first example works, but how will i pass the variable &#8220;fire&#8221; to the function &#8220;me&#8221;? </p>
<p>I tried both the 2nd and the 3rd examples but it doesnt work</p>
<p>You could add a property to your item and then read it from within your me function:</p>
<p>item.id =&#8221;fire&#8221;;<br />
item.addEventListener(ContextMenuEvent.MENU_ITEM_S ELECT, me);</p>
<p>function me(myEvent:MouseEvent)<br />
{<br />
var dO:DisplayObject = DisplayObject(myEvent.target);<br />
mov:MovieClip = dO as MovieClip;<br />
trace(mov.id);// fire<br />
}</p>
<p><span style="font-family: Verdana;"><span style="color: #0000ff;">색다른 방법이다. 코드를 보면 객체안에 자식인자를 두고 그곳에 전달하고자 하는 변수를 넣어둔다.<br />
그리고 이벤트핸들러에서는 그렇게 저장된 변수를 꺼내 쓰는 방식이다.<br />
내가 처한 상황을 어느정도 해결할 수 있을것 같지만, 궁극적인 해결책은 아닌듯.</span></span></p>
<p><span><strong>apu808</strong></span><br />
What Im trying to do is create objects each with an eventListener with a function that passes the state name to the function. What it is doing instead, is picking up the variable &#8220;stateName&#8221; and pass the last value which was in &#8220;stateName&#8221;.<br />
Please help&#8230;.</p>
<p>for (var key:String in childArray){<br />
var stateName = childArray[key].@name;<br />
var stateMCObject:DisplayObject = this.getChildByName(&#8220;mc&#8221;+stateName)<br />
var stateBTNObject:DisplayObject = this.getChildByName(&#8220;btn&#8221;+stateName)<br />
stateBTNObject.x=stateMCObject.x;<br />
stateBTNObject.y=stateMCObject.y;<br />
var functionString:Function = function(evt:MouseEvent){stateRollover(evt, stateName)};<br />
stateBTNObject.addEventListener(MouseEvent.ROLL_OV ER,functionString,false, 0, true);<br />
}</p>
<p>function stateRollover(evt:MouseEvent, msg:String) {<br />
dtTopText.text=msg;<br />
}</p>
<p><span style="font-family: Verdana; color: #2222ee;">역시 이런 꼼수스러운 방법이 항상 내 스타일인 것 같다.<br />
Function 으로 정의된 변수(functionString)에 함수를 넣는데 그 함수는 이벤트와 전달하고자 하는 변수를 넘겨받는 또다른 함수(stateRollover)를 호출한다.<br />
그리고 그렇게 정의된 함수(functionString)를 이벤트핸들러로 사용한다.<br />
I love this code!</span></p>
<p>View Full Version : <a href="http://www.kirupa.com/forum/showthread.php?t=251179">[AS3] Pass variable with addEventListener</a></p>
<p> </p>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://overfloweb.com/blog/index.php/archives/116/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>익명의 함수로된 이벤트핸들러를 removeEventListener 시키기</title>
		<link>http://overfloweb.com/blog/index.php/archives/115</link>
		<comments>http://overfloweb.com/blog/index.php/archives/115#comments</comments>
		<pubDate>Mon, 02 Feb 2009 05:30:00 +0000</pubDate>
		<dc:creator>overflow</dc:creator>
				<category><![CDATA[actionScript]]></category>
		<category><![CDATA[study]]></category>

		<guid isPermaLink="false">http://overfloweb.com/blog/?p=115</guid>
		<description><![CDATA[removeEventListener() for an anonymous function 익명의 함수로된 이벤트핸들러를 removeEventListener 시키기   axiomflash I have an event listener with an anonymous function literal, rather than a function reference. What I am trying to figure out is how to remove that event listener. Obviously, I need a reference to the anonymous function, so the two functions are [...]]]></description>
			<content:encoded><![CDATA[<h2>removeEventListener() for an anonymous function</h2>
<h2><span style="color: #0000ff;">익명의 함수로된 이벤트핸들러를 removeEventListener 시키기</span></h2>
<p> </p>
<p><span><strong>axiomflash</strong></span></p>
<p><span>I have an event listener with an anonymous function literal, rather than a function reference. What I am trying to figure out is how to remove that event listener.</span></p>
<p><span>Obviously, I need a reference to the anonymous function, so the two functions are ===. But, something is going wrong&#8230; it just doesn&#8217;t work, ad this situation doesn&#8217;t generate any feedback to tell me what might be wrong.</span></p>
<p><span>There is some good info here (http://blogs.adobe.com/simplicity/2007/10/post.html), but not a clear explanation.</span></p>
<p><span>private static var _myFunc:Function;</span></p>
<p><span>public static function addCreditsToolTip(clip:DisplayObject):void</span><br />
<span>{</span><br />
<span>clip.addEventListener(&#8220;rollOver&#8221;,</span><br />
<span>_myFunc = function():void</span><br />
<span>{</span><br />
<span>trace(&#8220;yay!&#8221;);</span><br />
<span>});</span></p>
<p><span>trace(_myFunc); //&#8221;function Function() {}&#8221; &lt; PERFECT!</span><br />
<span>clip.removeEventListener(&#8220;rollOver&#8221;, _myFunc); // &lt; this doesn&#8217;t work</span></p>
<p><span style="color: #2222ee;">메모리 관리를 위해서 removeEventListener 는 반드시 해줘야 할텐데,<br />
위의 코드처럼 이벤트 핸들러가 익명의 함수로 등록된 addEventListener 를 removeListener 해주기엔 딱히 방법이 없다.<br />
그래서 30분에 걸친 구글링 끝에 찾아낸 포스팅. 나와 똑같은 고민을 하고 있구나!<br />
너무나도 알고싶었다. 멋쟁이들의 답글을 읽어보았다.</span></p>
<hr /><span><strong>Dazzer</strong></span><br />
<span>You might not need to. If you trust the Garbage Collector, add this parameter</span></p>
<p> </p>
<p><span>clip.addEventListener(MouseEvent.ROLL_OVER, yourFunction, false, 0 , TRUE);</span></p>
<p><span>the TRUE at the end indicates that the listener should be a WEAK reference, and hence does not count to the number of listeners the object has.</span></p>
<p><span>I&#8217;m surprised that even works though. And its not something I would recommend.</span></p>
<p><span><span style="color: #0000ff;">한마디로 GC 를 믿는다면 약참조만 해놓으란 소리다. 그닥 좋은 방법은 아닌듯.</span></span></p>
<p><span><strong>Censor</strong></span><br />
<span>Works for me in flash not sure if its what you want, hope it helps</span></p>
<p><span>var _myFunc:Function;</span></p>
<p><span>function addCreditsToolTip(clip:DisplayObject):void</span><br />
<span>{</span><br />
<span>clip.addEventListener(MouseEvent.ROLL_OVER, _myFunc = function(evt:Event):void { trace(&#8220;yay!&#8221;); clip.removeEventListener(MouseEvent.ROLL_OVER, _myFunc)})</span><br />
<span>trace(_myFunc); //&#8221;function Function() {}&#8221; &lt; PERFECT!</span><br />
<span>}</span></p>
<p><span>var test:Sprite = new Sprite()</span><br />
<span>test.graphics.beginFill(0&#215;000000)</span><br />
<span>test.graphics.drawRect(0,0,100,100)</span><br />
<span>stage.addChild(test)</span></p>
<p><span>addCreditsToolTip(test)</span></p>
<p><span><span style="color: #0000ff;">바로 이거다!<br />
익명의 함수를 Function 으로 정의된 변수에 넣고, 익명의 함수를 마치 이벤트핸들러인양 removeEventListener 해준다. 이런 멋진 생각을! ㅎ<br />
내일 출근하자마자 바로 써먹어봐야지.</span></span></p>
<p>View Full Version : <a href="http://www.kirupa.com/forum/showthread.php?t=287606">removeEventListener() for an anonymous function</a></p>
]]></content:encoded>
			<wfw:commentRss>http://overfloweb.com/blog/index.php/archives/115/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>곰 FLV 플레이어</title>
		<link>http://overfloweb.com/blog/index.php/archives/110</link>
		<comments>http://overfloweb.com/blog/index.php/archives/110#comments</comments>
		<pubDate>Thu, 11 Dec 2008 05:56:41 +0000</pubDate>
		<dc:creator>overflow</dc:creator>
				<category><![CDATA[actionScript]]></category>
		<category><![CDATA[study]]></category>

		<guid isPermaLink="false">http://overfloweb.com/?p=110</guid>
		<description><![CDATA[퍼가기용 채널용]]></description>
			<content:encoded><![CDATA[<h3>퍼가기용</h3>
<p><object width="416" height="385" data="http://ch.gomtv.com/player/gomflash.swf?pid=24776&#038;bid=247571" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://ch.gomtv.com/player/pid=24776&#038;bid=247571" /><param name="allowfullscreen" value="true" /></object></p>
<h3>채널용</h3>
<p><object type="application/x-shockwave-flash" width="400" height="323" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"><param name="movie" value="http://ch.gomtv.com/player/gomchflash.swf?pid=24776&#038;bid=247571" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="bgcolor" value="#000000" /><embed src="http://ch.gomtv.com/player/gomchflash.swf?pid=24776&#038;bid=247571" width="400" height="323" allowScriptAccess="always" type="application/x-shockwave-flash" allowFullScreen="true" bgcolor="#000000" ></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://overfloweb.com/blog/index.php/archives/110/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ActionScript 3.0 이행 스텝 가이드</title>
		<link>http://overfloweb.com/blog/index.php/archives/61</link>
		<comments>http://overfloweb.com/blog/index.php/archives/61#comments</comments>
		<pubDate>Mon, 12 May 2008 11:18:00 +0000</pubDate>
		<dc:creator>overflow</dc:creator>
				<category><![CDATA[actionScript]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[actionscript 3.0]]></category>

		<guid isPermaLink="false">http://overfloweb.com/?p=61</guid>
		<description><![CDATA[ActionScript 3.0 이행 스텝 가이드 R Blank Adobe Flex 2와 Flash CS3 Professional에서 생성된SWF 파일을 실행하는 Adobe Flash Player 9는 Flash 플랫폼의 새로운 파워업을 구현한다고 할 수 있습니다. Flash Player 9를 이용하면 Flash 7이나 8로 제작한 프로젝트에 비해 최고30배 고속으로 실행되는 프로젝트를 제작할 수 있습니다. Flash Player 9의 퍼포먼스가 큰 폭으로 향상한 이유는 Flash나 Flex [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: large;"><span>ActionScript 3.0 이행 스텝 가이드</span></span><br />
R Blank<br />
Adobe Flex 2와 Flash CS3 Professional에서 생성된SWF 파일을 실행하는 Adobe Flash Player 9는 Flash 플랫폼의 새로운 파워업을 구현한다고 할 수 있습니다. Flash Player 9를 이용하면 Flash 7이나 8로 제작한 프로젝트에 비해 최고30배 고속으로 실행되는 프로젝트를 제작할 수 있습니다.</p>
<p>Flash Player 9의 퍼포먼스가 큰 폭으로 향상한 이유는 Flash나 Flex 의 디벨로퍼가 기술한 코드를 해독하는 ActionScript Virtual Machine (AVM )을 새롭게 개발하고 있는 것을 들 수 있습니다. 또 ActionScript 3.0은 테크놀로지의 좋은  파트너라고도 할 수 있습니다 ActionScript의 최신 버전 ActionScript 3.0 에도 대폭적인 개량이 이루어지고 있습니다. ActionScript 3.0은 구버전보다 훨씬 파워풀함과 동시에 ActionScript 언어를 ECMAScript 국제 규격에 완전하게 준거시킨 버전이기도 합니다. 그 때문에 ActionScript 3.0은 종래의 Flash 디벨로퍼가 익숙했던 것 이상의 엄밀함이 요구됩니다.</p>
<p>…<br />
<span style="font-size: large;"><span>알파치는 0에서 1의 범위에서 지정한다</span></span><br />
기존의 ActionScript에서는 무비 클립의 알파 프롭퍼티를 0부터 100사이의 값으로 지정하고 있었지만 ActionScript 3.0에서는 0 부터 1 까지가 알파값의 범위가 됩니다. 이러한 변경은 그 자체가 별 것은 아니지만 ActionScript 3.0을 시작하는데 있어서 충분히 주의해 둘 필요가 있는 것이라고 할 수 있습니다. 디벨로퍼가 디버그 작업에 몇 시간을 낭비하거나 의지를 잃는 사태에 빠질 수도 있는 변경사항입니다.</p>
<p>이것과 같이 단순한 변경사항이 많이 있습니다. 예를 들어 지금까지 MovieClip 프롭퍼티로 사용되고 있었던 언더 스코아가 모두 삭제되어 있거나( 「_x 」는 「x 」, 「_width 」는 「width 」가 됩니다), Video 클래스의 attachVideo() 메소드가 보다 적절한 이름의attachNetStream() 으로 변경되어 있거나 합니다. ActionScript 3.0의 습득을 원한다면 ActionScript 테크놀러지 센터에 액세스 하는 것을 추천합니다.<br />
<span style="font-size: large;"><br />
<span>무비 클립의 변경 사항</span></span><br />
다음의 코드가 작동한다면 멋지지 않습니까?.</p>
<pre><span style="color: #0000ff;">var</span> mc:<span style="color: #808000;">MovieClip</span> = <span style="color: #0000ff;">new</span> <span style="color: #808000;">MovieClip</span>();</pre>
<p>그렇습니다, ActionScript 3.0에서는 이 코드가 올바르게 기능합니다. 이것은 기존의 Flash 디벨로퍼에 있어서 가장 큰 개념상의 변경 사항이라고 할 수 있을지도 모릅니다. ActionScript 3.0 에는 새로운 표시 리스트가 있어서 이것이 Flash Player 위에 있으면서 여러분의 SWF 파일의 실질적인 물리 아키텍처를 구성합니다.</p>
<p>기존의 Flash에 있어서의 최대의 무거운 짐이라고 한다면 무비 클립이 SWF 파일상의 모든 물리 오브젝트의 친타입으로서 다루어지고 있던 것입니다. 이것은 모든 요소가 무비 클립이거나 모든 요소에 타임라인이 필요한 것이 아닌데도 말입니다. ActionScript 3.0에는 DisplayObject라는 이름의 새로운 클래스가 있어서 MovieClip은 단지 표시 오브젝트의 한 종류로서 존재합니다. 또 하나의 표시 오브젝트는 스프라이트입니다. 이러한 DisplayObject의 각 종류에는 다른 능력이 갖춰져 있습니다(각각 다른 자원을 이용합니다). 즉, 무비 클립에 대해서 할 수 있는 것과 스프라이트에서 할 수 있는 것이 각각 다릅니다.</p>
<p>위에서 보았던 코드가 무비 클립을 생성한다고 하여 이 무비 클립이 자동적으로 표시되는 것은 아닙니다. 무비 클립을 표시하려면 해당 DisplayObject 클래스를 스테이지 또는 다른 표시 오브젝트에 첨부할 필요가 있습니다. 무비클립(또는 모든 표시 오브젝트)을 어디에 배치할까는 addChild() 또는 addChildAt() 메소드를 이용해 Flash에 명시적으로 지시할 필요가 있습니다.</p>
<p>이것은 다양한 가능성이 있습니다. 예를 들어 지금까지의 Flash의 경우 무비클립은 특정의 타임 라인에 관련지을 수 있었기 때문에 무비클립을 다른 타임라인상으로 이동할 수 없었지만 앞으로는 removeChild()나 addChild()를 이용하여 표시 리스트내의 표시 오브젝트의 위치를 동적으로 변경할 수 있습니다(예를 들어, 프로젝트가 있는 부분의 타임 라인으로부터 무비 클립을 삭제하고 이것을 프로젝트내의 완전히 개별적인 무비 클립으로 이동 것이 가능합니다). 복잡하게 얽히는 타임라인의 문제점은 회피할 수 있을 것입니다.</p>
<p><span style="font-size: large;">_root 는 어디에?</span><br />
위에서 설명한 변경사항을 바탕으로ActionScript 3.0에서는 _root의 개념도 없어졌습니다. 즉, SWF 파일의 메인 타임라인의 참조가 없어졌습니다(AS3에서는 메인의 타임라인을 유지할 필요성이 없어졌습니다). 또,  만능적으로 액세스 가능했던 Stage 클래스도 없어졌습니다.</p>
<p>그럼 ActionScript 3.0에서 이러한 개념이 어떻게 되냐하면 스테이지 또는 스테이지의 자식이 관련지을 수 있었던 표시 오브젝트는 각자, Stage로 불리는 해당 스테이지에 의해서 참조를 가지게 됩니다. 예전에 _root 로서 파악해 온 것은 향후 Stage 프롭퍼티로 참조할 수 있습니다.</p>
<p><span style="font-size: large;"><span>새로워진 패키지</span></span><br />
패키지로서 중요한 것은 허용량의 대소가 아니라 몇 개의 클래스를 포함할 수 있는가 하는 것입니다. 패키지와 일련의 클래스는 디벨로퍼가 코드를 정리하는 목적으로 이용할 수 있는 툴입니다. ActionScript 2.0의 패키지는 클래스 파일을 수용하기 위한 컴퓨터상의 폴더이며 코드를 정리하기 위한 편리한 툴 정도 였습니다. 그리고 각 파일에는 오로지 1개의 클래스 밖에 포함할 수 없습니다. 또한 클래스명과 파일명을 완전하게 일치시키지 않으면 안 된다고 하는 제약이 있었습니다.</p>
<p>그러나 AS3는 package 스테이트먼트를 이용해 ActionScript (.as ) 파일 내에서 정의 가능한, 진정한 의미의 패키지를 취급할 수 있게 됩니다. AS 파일에 패키지(또는 네스트화 된 복수의 패키지)를 수록하여 이 안에 1개 또는 복수의 클래스를 포함하는 것이 가능합니다.</p>
<p>이 변경이 프로그래머를 더 혼란스럽게 하는 것으로 보일지도 모르지만 실제로 이 새로운 코드 구조를 시험해 보면 그 유연성이 마음에 들 것입니다. 필자 자신도 이 기능이 코딩 체재에 얼마나의 영향을 미칠까에 대해서 회의적이었지만 작업을 진행하면서 클래스(특히, 순수한 데이터 클래스등)가 매우 간단하게 작성할 수 있게 된 것을 실감하고 있습니다. 패키지에 관한 이번 변경은 ActionScript 프로그래머에 의해 좋은 객체 지향프로그래밍 수법을 제시하는 것이라고 할 수 있겠습니다.</p>
<p><span style="font-size: large;"><span>7 개의 주요 패키지/클래스</span></span><br />
ActionScript 3.0의 클래스 파일을 사용하기 전에 알아야할 것은 지금까지 ActionScript에 내포되고 있던 일련의 Flash Player 클래스를 ActionScript 3.0에서는 명시적으로 import하지 않으면 안 된다는 것입니다. 만일 텍스트 필드를 작성하고 싶은 경우에는 다음의 예와 같이 텍스트 필드 클래스를 명시적으로 읽어들일 필요가 있습니다.</p>
<p>import flash.text.TextField;</p>
<p>또 텍스트 패키지의 모든 클래스를 읽어 들이고 싶은 경우에는 다음과 같이 기술합니다.</p>
<p>import flash.text.*;</p>
<p>import 스테이트먼트는 변경사항이 없기 때문에 ActionScript 2.0와 같은 방법으로 이용할 수 있습니다. 앞으로 import 스테이트먼트가 예전보다 자주 필요할 뿐입니다. 소정의 클래스를 명시적으로 읽어들이지 않으면 클래스 파일로 완성되는 것은 큰 폭으로 제한되게 됩니다.</p>
<p>ActionScript 3.0의 패키지와 클래스 파일이 익숙하지 않거나 어느 클래스가 필요하게 되는지를 고민하고 싶지 않은 경우는 다음의 7 개의 패키지를 기억해<span id="callbacknestjasutistorycom2984053"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1" height="1" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="id" value="bootstrapperjasutistorycom2984053" /><param name="flashvars" value="&amp;callbackId=jasutistorycom2984053&amp;host=http://jasu.tistory.com&amp;embedCodeSrc=http%3A%2F%2Fjasu.tistory.com%2Fplugin%2FCallBack_bootstrapper%3F%26src%3Dhttp%3A%2F%2Fcfs.tistory.com%2Fblog%2Fplugins%2FCallBack%2Fcallback%26id%3D298%26callbackId%3Djasutistorycom2984053%26destDocId%3Dcallbacknestjasutistorycom2984053%26host%3Dhttp%3A%2F%2Fjasu.tistory.com%26float%3Dleft" /><param name="src" value="http://jasu.tistory.com/plugin/CallBack_bootstrapperSrc" /><param name="wmode" value="transparent" /><embed id="bootstrapperjasutistorycom2984053" type="application/x-shockwave-flash" width="1" height="1" src="http://jasu.tistory.com/plugin/CallBack_bootstrapperSrc" wmode="transparent" flashvars="&amp;callbackId=jasutistorycom2984053&amp;host=http://jasu.tistory.com&amp;embedCodeSrc=http%3A%2F%2Fjasu.tistory.com%2Fplugin%2FCallBack_bootstrapper%3F%26src%3Dhttp%3A%2F%2Fcfs.tistory.com%2Fblog%2Fplugins%2FCallBack%2Fcallback%26id%3D298%26callbackId%3Djasutistorycom2984053%26destDocId%3Dcallbacknestjasutistorycom2984053%26host%3Dhttp%3A%2F%2Fjasu.tistory.com%26float%3Dleft"></embed></object></span>두면 좋을 것입니다. 이 7개의 패키지에는 Flash 어플리케이션 또는 FLA 에 필요한 클래스의 대부분이 포함되어 있습니다(보다 프로패셔널적인 개발 방법으로서는 필요한 클래스만을 읽어들이도록 해 주세요).</p>
<p>import flash.net.*;<br />
import flash.events.*;<br />
import flash.display.*;<br />
import flash.geom.*;<br />
import flash.ui.*; <br />
import flash.utils.*;<br />
import flash.text.*;<br />
<span style="font-size: large;"><br />
<span>document 클래스를 활용한다</span></span><br />
document 클래스는 모든 디벨로퍼에 있어서 유익한 것이지만 특히 메인 타임라인에 1 프레임만을 배치하는 것과 같은 디벨로퍼에 있어서 가장 유용한 것입니다. Flash 어플리케이션을 코딩 할 때 디벨로퍼의 상당수는 FLA 의 단일 프레임에 모든 요소를 배치하여 불과 1행의 ActionScript를 이용하고 제작한 외부 클래스 파일을 호출하고 있습니다. 앞으로는 이 1행의 코드마저 불필요하게 되어 퍼블리시 설정의 다이알로그 박스에서나 스테이지가 선택 되고 있을 때의 프롭퍼티 패널상에서 직접 FLA 에 document 클래스(제작중의 FLA 에 대한 단일의 클래스 파일)을 할당할 수 있습니다.</p>
<p>이 클래스는 반드시 Sprite 또는 MovieClip을 계승하는 것이 필요합니다.(document 클래스이기 위해). 이 클래스의 constructor함수는 해당 SWF 파일의 읽기와 함께 자동적으로 불려 갑니다. </p>
<p><span style="font-size: large;"><span>비트 맵 및 무비의 읽기 방법</span></span><br />
loadMovie() 메소드(혹은 예전의 ActionScript로 말하면 MovieClipLoader() 클래스)는 대부분의 Flash 디벨로퍼에 있어서 빠뜨릴 수 없는 존재라고 할 수 있겠습니다. 여기에서는 Flash 9 컨텐츠에 Flash 무비 또는 비트 맵(JPEG ,PNG ,GIF)을 읽어들이기 위한 중요한 7행의 코드를 소개하기로 하겠습니다. 이하에 나타내는 코드는 스프라이트를 사용한 간단한 예지만 이 밖에도 다양한 변이를 생각할 수 있습니다.</p>
<pre><span style="color: #0000ff;">var</span> bgToLoad:<span style="color: #808000;">String</span> = "<span style="color: #ff00ff;">05092007.gif</span>";
<span style="color: #0000ff;">var</span> bgLoader:Loader = <span style="color: #0000ff;">new</span> Loader();
<span style="color: #0000ff;">var</span> bgURL:URLRequest = <span style="color: #0000ff;">new</span> URLRequest(bgToLoad);
bgLoader.<span style="color: #808000;">load</span>(bgURL);

<span style="color: #0000ff;">var</span> bg:Sprite = <span style="color: #0000ff;">new</span> Sprite();
bg.addChild(bgLoader);
addChild(bg);</pre>
<p>이 코드에서는 우선 Loader 오브젝트를 작성하고 미디어 파일에 포인트 한 URLRequest 오브젝트를 사용해서 외부 미디어의 읽기를 지시하고 있습니다. 이 때 미디어를 읽어들이게 하는 앞의 표시 오브젝트(bg)가 확실히 존재하는 것을 확인하고 이 코드는 메인의 타임 라인에 존재하게 되므로 맨 마지막 줄의 addChild에 의해서 bg 스프라이트를 스테이지상에 배치하고 있습니다.</p>
<p><span style="font-size: large;"><span>XML의 읽기 방법</span></span><br />
Flash 유저의 대부분이 외부 SWF 파일 또는 비트맵 읽기에 익숙한 것과 같이 무비에 XML을 사용하고 데이터를 읽어들이는  케이스도 빈번히 볼 수 있습니다. XML의 이용에 관해서는 ActionScript 3.0에서 비약적으로 편리한 기능이 많이 준비되어 있습니다. 이러한 편리한 기능에 접하기 전에 우선 XML 파일을 읽어들이기 위한 기본적인 코드를 소개해 둡니다.</p>
<pre><span style="color: #0000ff;">var</span> xmlSrc:<span style="color: #808000;">String</span> = "<span style="color: #ff00ff;">myData.xml</span>";
<span style="color: #0000ff;">var</span> ur:URLRequest = <span style="color: #0000ff;">new</span> URLRequest(xmlSrc);
<span style="color: #0000ff;">var</span> ul:URLLoader = <span style="color: #0000ff;">new</span> URLLoader();

ul.<span style="color: #808000;">addEventListener</span>(Event.COMPLETE,dataLoaded);
ul.<span style="color: #808000;">load</span>(ur);

<span style="color: #0000ff;">function</span> dataLoaded(evt:Event):<span style="color: #0000ff;">void</span>
{
<span style="color: #808000;">trace</span>(evt.<span style="color: #808000;">target</span>.<span style="color: #808000;">data</span>);
}</pre>
<p>이 코드에서는 우선 사용하고 싶은 XML 파일에 포인트 하는 URLRequest 오브젝트를 작성하고 그 다음에 URLRequest를 읽어들이는 URLLoader를 작성합니다. 그리고 COMPLETE 이벤트(XML 의 읽기 완료)의 청취자로서 dataLoaded() 메소드를 추가하고 있습니다. dataLoaded() 메소드 안에서는 이벤트 자체의 target 프롭퍼티의 data 프롭퍼티에 포인트 하는 것으로 XML을 trace 하고 있습니다.</p>
<p><span style="font-size: large;"><span>비약적으로 편리하게 된 XML의 해석</span></span><br />
이것으로 ActionScript 3.0의 훌륭한 XML 기능인 ECMAScript for XML (E4X ) 을 이용할 준비가 갖추어졌습니다(ActionScript 3.0은 국제적인 오픈 표준 규격의 ECMAScript 262에 완전 준거하고 있습니다). E4X의 자세한 해설은 다른 기회로 미룹니다만 데이터의 취급이 중요하게 대두되고 있고 ActionScript 3.0에서는 이 부분이 큰 폭으로 개선되고 있는 것을 고려하여 하이라이트를 소개하기로 하겠습니다.</p>
<p>ActionScript 2.0에서 디벨로퍼의 대부분이 XML의 읽기와 동시에 Flash 데이터에의 해석•변환을 실시하여 처리 시간으로서 프로세서에 큰 부담이 되었습니다. 그러나 ActionScript 3.0과 E4X를 이용하면 노드를 직접적으로 참조할 수 있어서 XML의 트리 구조를 파일 시스템과 같이 손쉽게 취급하는 것이 가능합니다. </p>
<p><span style="font-size: large;">Flash Player 9에서 주목하는 신기능</span><br />
지금까지 소개한 내용을 참고로 하여 ActionScript 3.0에의 대한 우려가 어느 정도 해소되었다고 생각합니다. 다음은 컨텐츠 제작의 폭을 한층 더 넓힐 가능성을 숨긴 Flash Player 9의 몇 개의 신기능에 대해서 다루기로 하겠습니다.</p>
<p>우선 첫 번째는 풀 스크린 모드 입니다. 본래 이 모드는 비디오 컨텐츠 체험을 JavaScript에 손대는 일 없이 확충하는 목적으로 개발된 것이지만 비디오 이외의 모든 어플리케이션에서도 이용할 수 있습니다(다만, 키보드로부터의 입력은 무효화됩니다).</p>
<p>Flash CS3의 새로워진 비디오 재생 컴퍼넌트에 이 기능이 포함되어 있습니다. 지금부터는 ActionScript에 접하는 일 없이 간단하게 풀 스크린 대응의 비디오 어플리케이션을 개발하는 것도 가능합니다(이 경우 HTML 안의 embed/object 나 SWFObject 코드의 allowFullScreen 파라미터를 잊지 않고 true로 설정하는 것에 주의해 주세요).이 기능에 대해 자세한 것은 Tracy Stampfli 씨가 집필한 Flash Player 디벨로퍼 센터 기사 <a href="http://www.adobe.com/devnet/flashplayer/articles/full_screen_mode.html" target="_blank">「Flash Player 9 의 풀 스크린 모드에 대해 」</a>를 참조해 주세요.</p>
<p>또 하나의 주목 할만한 기능은 뮤직 투시기을 작성할 때 사용할 수 있는 오디오 스펙트럼 해석 기능 입니다. 새롭게 정비된 SoundMixer 클래스에는 computeSpectrum()라고 하는 이름의 메소드가 포함되어 있어서 이 메소드를 이용하는 것으로 음악을 수치화할 수 있습니다. 그리고 수치화된 데이터를 바탕으로 쿨한 오디오 애니메이션이나 뮤직 투시기를 작성할 수 있습니다. 이 기능을 소개하는 매우 효과적인 튜토리얼에 대해서는 Peter deHaan 씨의 <a href="http://blogs.adobe.com/pdehaan/2006/06/soundmixercomputespectrum.html" target="_blank">블로그의 엔트리</a> 를 참조해 주세요.</p>
<p><span style="font-size: large;"><span>그리고 마지막으로&#8230;</span></span><br />
이 기사를 마치기 전에 참고 정보를 수집하기 위한 가이드를 소개하고 싶지만 그 전에 우선 이번 완전히 새로운 언어가 도입되었음에도 불구하고 매우 포괄적인 Flash CS3 Professional 헬프 파일을 제작한 Flash 서포트 팀에 대해서 칭찬을 보내고 싶습니다.</p>
<p>ActionScript 3.0과 Flash CS3는 아직 신출내기 단계입니다. 따라서 아직 관련 자료가 그만큼 많지는 않습니다. 향후 자료가 증가해 갈 것은 틀림없습니다. 현시점에서의 퍼스트 스텝으로서는 ActionScript 3.0과 Flash에 관한 최신 또는 갱신판의 기사, 샘플, 퀵 스타트 튜토리얼 등이 다수 게재된 Flash 디벨로퍼 센터를 북마크하는 것을 추천합니다. 또 Adobe.com에서 공개중의Flash CS3 LiveDoc 및Flex 2 LiveDoc도 참조하도록 해 주세요.(이 기사에서도 반복하여 참조한 것처럼) 이것들은 계속적으로 갱신되는 헬프 파일을 포함한 유용한 자원이며 각 항목에 대해서는 아도브의 서포트 스탭이나 다른 디벨로퍼가 코멘트를 쓰는 곳도 준비되어 있습니다.</p>
<p>아울러 2006년 중순부터 ActionScript 3.0과 Flex 2에 관한 복수의 서적과 DVD 를 출판하여 Flash 커뮤니티에 공헌해 주셨던 Joey Lott 씨에 대해서 이 자리를 빌려 Flash 커뮤니티의 일원으로서 개인적인 사의를 표하고 싶습니다. 이러한 서적•DVD는 매우 알기 쉬운 참고 자료입니다. 그리고 Colin Mook 씨에 의한 「Essential ActionScript 3.0 」가 출판되는 것을 기다릴 뿐입니다.</p>
<p>어땠습니까.이 기사를 읽는 것으로 ActionScript 3.0의 개념 이해가 깊어지면 다행입니다. 여러분도 꼭 이 훌륭한 최신 테크놀러지를 경험해 보세요.</p>
<p>출처 : <a href="http://www.adobe.com/newsletters/edge/may2007/articles/article6/index.html">영문 포스트</a> <a href="http://jasu.tistory.com/298">http://jasu.tistory.com/298</a></p>
]]></content:encoded>
			<wfw:commentRss>http://overfloweb.com/blog/index.php/archives/61/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
