<?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>Kimkijeung.com &#187; Flash-AS2.0</title>
	<atom:link href="http://kimkijeung.com/category/flash-as2/feed/" rel="self" type="application/rss+xml" />
	<link>http://kimkijeung.com</link>
	<description>Interactive development,flash,Actionscript</description>
	<lastBuildDate>Wed, 25 Aug 2010 09:12:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<image>
			<title>Kimkijeung.com</title>
			<url>http://kimkijeung.com/blog/wp-content/uploads/2009/12/index.gif</url>
			<link>http://kimkijeung.com</link>
			<width></width>
			<height></height>
			<description>Interactive development,flash,Actionscript</description>
		</image>		<item>
		<title>Checking user bandwidth</title>
		<link>http://kimkijeung.com/2007/08/01/checking-user-bandwidth/</link>
		<comments>http://kimkijeung.com/2007/08/01/checking-user-bandwidth/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 03:00:51 +0000</pubDate>
		<dc:creator>vkimone</dc:creator>
				<category><![CDATA[Flash-AS2.0]]></category>
		<category><![CDATA[Flash-Tip]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[bandwidth]]></category>

		<guid isPermaLink="false">http://vkimone.inblog.kr/?p=483</guid>
		<description><![CDATA[우리나라의 웹환경에서는 초고속 인터넷과 같은 인프라의 발전으로 대역폭(bandwidth)을 고려해야할 만큼 네트워크 속도가 절대적으로 중요하지는 않다. 워낙 전송 속도가 빨라서 왠만한 웹사이트는 로딩시간없이 실시간으로  보여진다. 하지만 이는 특수한 우리나라의 경우에서만 해당하는 사항일뿐 아직까지 대부분의 다른나라에서의 전송속도는 생각하는 것 만큼 빠르지 않다. 좀더 범용적인 사이트의 개발을 위해서는 반드시 고려해야 할 사항이다. 특히 영상위주의 컨텐츠가 포함된 사이트의 경우 [...]]]></description>
			<content:encoded><![CDATA[<p>우리나라의 웹환경에서는 초고속 인터넷과 같은 인프라의 발전으로 대역폭(bandwidth)을 고려해야할 만큼 네트워크 속도가 절대적으로 중요하지는 않다.<br />
워낙 전송 속도가 빨라서 왠만한 웹사이트는 로딩시간없이 실시간으로  보여진다. 하지만 이는 특수한 우리나라의 경우에서만 해당하는 사항일뿐 아직까지 대부분의 다른나라에서의 전송속도는 생각하는 것 만큼 빠르지 않다. 좀더 범용적인 사이트의 개발을 위해서는 반드시 고려해야 할 사항이다.</p>
<p>특히 영상위주의 컨텐츠가 포함된 사이트의 경우 사용자의 대역폭을 고려하는 것이 좀더 사용자에게 좋은 컨텐츠를 제공하는 방법이 될 수 있다. 대부분 영상을 보여주는 방법으로 점진적 다운로드 방식(progressive download)을 사용한다. 실시간으로 다운로드 한만큼 플레이하는방식으로 이는 사용자 환경의 대역폭이 서비스의 질을 크게 좌우하게 된다.</p>
<p>영상을 보여주는 데 있어 점진적 다운로드 방식은 영상의 전체적인 용량보다는 영상의 압축률에 더 큰 영향을 받는다. 다시말해 데이타를 로드하면서 플레이하는 방식이기 때문에 비디오의 압축률을 높여 단위시간당 받을 수 있는 용량을 보다 크게 하여 좀더 원할하게 플레이 할 수 있다.</p>
<p>따라서 미리 사용자의 대역폭을 알아내어 거기에 알맞는 압축률의 비디오를 제공할 수 있는 것이다.<br />
플래시에서 일반적으로 대역폭을 측정하는 방법으로는 일정크기의 샘플파일을 다운로드하여 걸린시간을 측정하여 구할 수 있다. 하지만 이 대역폭은 절대적인 속도를 의미하는 것은 아니다.<br />
네트워크 사용량, 네트웍크 지연과 같은 여러가지 요인에 의해 언제든지 속도가 변경될 수 있다. 항상 측정된 속도로 데이타를 받을 수 있다는 의미가 아니다. 현재 시간에서 대략적인 사용자의 네트워크 속도를 가늠해 볼 수 있는데 의미가 있다. 불안정한 네트워크 일수록 측정 대역폭의 편차가 크게 발생한다.</p>
<p>대역폭 측정의 정확성을 높이기 위해서는 테스트하기 위해 사용하는 샘플의 용량을 크게 하거나,측정하는 테스트의 횟수를 늘려야한다. 하지만 이는 전송속도 측정을 위해 불필요하게 자원을 소모하게 되기 때문에 어느정도 적정선을 유지해야한다.<br />
여기서 제공하는 방법은 샘플파일의 크기를 50~100 KB 로 제한하고 측정횟수를 2회로 한정하였다.<br />
위 조건으로 측정한다고 해도 사용자의 네트워크 속도가 50KB 미만일 경우 100~200KB 를 테스트를위해 최소 2~4초정도의 시간이 걸리게 된다.</p>
<p><strong>&lt;bandwidthCheck class&gt;</strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">Dispatcher</span>;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">util</span>.<span style="color: #0066CC;">system</span>.<span style="color: #006600;">BandwidthCheck</span> <span style="color: #0066CC;">extends</span> Dispatcher <span style="color: #66cc66;">&#123;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _bandwidthSet:<span style="color: #0066CC;">Array</span>;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _bandwidth:<span style="color: #0066CC;">Number</span>;
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _startTime:<span style="color: #0066CC;">Number</span>;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _checkCount:<span style="color: #0066CC;">Number</span>;
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _loader:<span style="color: #0066CC;">MovieClipLoader</span>;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _container:<span style="color: #0066CC;">MovieClip</span>;
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">get</span> <span style="color: #0066CC;">bandwidth</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #b1b100;">return</span> _bandwidth;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> BandwidthCheck<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
_checkCount=<span style="color: #cc66cc;">0</span>;
_bandwidth=<span style="color: #cc66cc;">0</span>;
_bandwidthSet=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> check<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
_container= <span style="color: #0066CC;">_root</span>.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;container&quot;</span>, <span style="color: #0066CC;">_root</span>.<span style="color: #0066CC;">getNextHighestDepth</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> nocache:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: #cc66cc;">1000000</span>;
_loader=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">MovieClipLoader</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
_loader.<span style="color: #0066CC;">addListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
_loader.<span style="color: #0066CC;">loadClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;bandwidthDummy.png?nocache=&quot;</span>+nocache,_container<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> calculateBandwidth<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i <span style="color: #b1b100;">in</span> _bandwidthSet<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
_bandwidth+=_bandwidthSet<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
_bandwidth=_bandwidth<span style="color: #66cc66;">/</span>_checkCount;
&nbsp;
<span style="color: #808080; font-style: italic;">//dispatch a complete event</span>
startEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Event<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">COMPLETE</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onLoadStart</span><span style="color: #66cc66;">&#40;</span>targetMc:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
_startTime=<span style="color: #0066CC;">getTimer</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onLoadComplete</span><span style="color: #66cc66;">&#40;</span>targetMc:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
_loader.<span style="color: #0066CC;">unloadClip</span><span style="color: #66cc66;">&#40;</span>_container<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> elapsedTime:<span style="color: #0066CC;">Number</span>=<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">getTimer</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>-_startTime<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">1000</span>;
_checkCount++;
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> progress:<span style="color: #0066CC;">Object</span> = _loader.<span style="color: #0066CC;">getProgress</span><span style="color: #66cc66;">&#40;</span>targetMc<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> kilobytes:<span style="color: #0066CC;">Number</span>=progress.<span style="color: #0066CC;">bytesTotal</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">1024</span>;
<span style="color: #000000; font-weight: bold;">var</span> kBps:<span style="color: #0066CC;">Number</span>=kilobytes<span style="color: #66cc66;">/</span>elapsedTime;
_bandwidthSet.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>kBps<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>_checkCount==<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
check<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #66cc66;">&#123;</span>
calculateBandwidth<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>&lt;sample code&gt;</strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> bandwidthCheck:BandwidthCheck=<span style="color: #000000; font-weight: bold;">new</span> BandwidthCheck<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
bandwidthCheck.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">COMPLETE</span>,onBandwidthCheck<span style="color: #66cc66;">&#41;</span>;
bandwidthCheck.<span style="color: #006600;">check</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> onBandwidthCheck<span style="color: #66cc66;">&#40;</span>evt:Event<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;bandwidth-----------------&amp;gt;&quot;</span>+evt.<span style="color: #0066CC;">target</span>.<span style="color: #0066CC;">bandwidth</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>대역폭(bandwidth) 의 단위로는 KBps(kilobytes per second) 이다. 브라우저 캐쉬로 부터 다운받는것을 방지하기 위해 첨부한 문자열로 인해 반드시 웹상에서 다운받아야 로드할수 있다.</p>
<p><a href="/blog/wp-content/uploads/2007/08/bandwidth-sample.zip" target="_self">download sample</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kimkijeung.com/2007/08/01/checking-user-bandwidth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buttons using a Design Pattern</title>
		<link>http://kimkijeung.com/2007/06/28/buttons-using-a-design-pattern/</link>
		<comments>http://kimkijeung.com/2007/06/28/buttons-using-a-design-pattern/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 04:09:43 +0000</pubDate>
		<dc:creator>vkimone</dc:creator>
				<category><![CDATA[Flash-AS2.0]]></category>
		<category><![CDATA[Programming-OOP&OOD]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[Design pattern]]></category>
		<category><![CDATA[template method]]></category>

		<guid isPermaLink="false">http://vkimone.inblog.kr/?p=466</guid>
		<description><![CDATA[flash에서 구현되는 대부분의 사용자와의 Interaction 은 버튼을 통해 이루어 진다. 즉, 버튼을 통해 이벤트가 발생되고 그것을 통해 필요한 반응들을 처리하게 된다. 일반적으로 flash 에 버튼을 설정할때는 아래와 같이 직접 이벤트 핸들러 함수를 등록하여 사용한다. button.onRelease=function(){  //code&#8230;.} 하지만 이런 방법은 무비클립이나 버튼 자체에 코드가 종속되어 버리게 되어, 제어해야할 버튼이 많을 경우 이곳저곳에 이벤트 핸들러 함수를 작성해야하므로 [...]]]></description>
			<content:encoded><![CDATA[<p>flash에서 구현되는 대부분의 사용자와의 Interaction 은 버튼을 통해 이루어 진다.<br />
즉, 버튼을 통해 이벤트가 발생되고 그것을 통해 필요한 반응들을 처리하게 된다.<br />
일반적으로 flash 에 버튼을 설정할때는 아래와 같이 직접 이벤트 핸들러 함수를 등록하여 사용한다.</p>
<p>button.onRelease=function(){  //code&#8230;.}</p>
<p>하지만 이런 방법은 무비클립이나 버튼 자체에 코드가 종속되어 버리게 되어, 제어해야할 버튼이 많을 경우 이곳저곳에 이벤트 핸들러 함수를 작성해야하므로 체계적인 이벤트 플로우를 관리하기 위해서 좀 부족한 감이 든다.<br />
또한 버튼은 단독으로 한개가 있는것보다는 여러개의 버튼이 컨텐츠의 네비게이션으로서 작용하는 경우가 대부분이다. 따라서, 버튼을 릴리즈 했을 경우 활성/비활성되는 부분도 고려해야하는 문제가 있다.</p>
<p>여기에서 소개하는 방법은 Design pattern 중에 Template method 패턴을 활용하여 버튼 로직을 구현하는 부분을 구현하고 실제적인 기능을 담당하는 부분은 추상클래스의 상속을 통해 구현하는 방법을 사용하였다.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="50" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="menu" value="false" /><param name="src" value="/blog/wp-content/uploads/2007/06/buttonManager.swf" /><embed type="application/x-shockwave-flash" width="500" height="50" src="/blog/wp-content/uploads/2007/06/buttonManager.swf" menu="false"></embed></object></p>
<p>기본적인 개념은 추상클래스 타입을 확장하여 각각의 구상클래스로서 버튼클래스를 제작한다.<br />
그리고 추상클래스 타입을 이용해 작성된  ButtonManager class 에 버튼 클래스를 등록한다.<br />
여기서 ButtonManager class 는 버튼 등록, 활성/비활성 체크 같은 전체적인 버튼을 관리하는 역할을 담당하게 된다.<br />
(* 이곳에 사용된 startEvent 메소드는 기본적으로 제공하는 Dispatcher 클래스의 dispatchEvent 메소드를 재정의 한것이다. )</p>
<p><strong>&lt;AbstractSimpleButton Class&gt;<br />
</strong>버튼 추상 클래스로써 생성하는 모든 버튼에 공통적으로 상속되는 클래스이다.<br />
이곳에 선언된 추상메소드를 구상클래스에서 오버라이드(override)하여 실제적인 기능을 구현한다.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">Dispatcher</span>;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">Delegate</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">ui</span>.<span style="color: #0066CC;">button</span>.<span style="color: #006600;">AbstractSimpleButton</span> <span style="color: #0066CC;">extends</span> Dispatcher <span style="color: #66cc66;">&#123;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _mc:<span style="color: #0066CC;">MovieClip</span>;
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setController<span style="color: #66cc66;">&#40;</span>inMc : <span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
_mc=inMc;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">MovieClip</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #b1b100;">return</span> _mc;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">/**---------------------------------------------------------------------------
* Constructor function
* @param inMc controller movieClip
*---------------------------------------------------------------------------*/</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> AbstractSimpleButton<span style="color: #66cc66;">&#40;</span>inMc:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
setController<span style="color: #66cc66;">&#40;</span>inMc<span style="color: #66cc66;">&#41;</span>;
setButton<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setButton<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">onRollOver</span>=Delegate.<span style="color: #006600;">create</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>,<span style="color: #0066CC;">onRollOver</span><span style="color: #66cc66;">&#41;</span>;
getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">onRollOut</span>=Delegate.<span style="color: #006600;">create</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>,<span style="color: #0066CC;">onRollOut</span><span style="color: #66cc66;">&#41;</span>;
getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">onPress</span>=Delegate.<span style="color: #006600;">create</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>,<span style="color: #0066CC;">onPress</span><span style="color: #66cc66;">&#41;</span>;
getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">onRelease</span>=Delegate.<span style="color: #006600;">create</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>,<span style="color: #0066CC;">onRelease</span><span style="color: #66cc66;">&#41;</span>;
getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">onReleaseOutside</span>=Delegate.<span style="color: #006600;">create</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>,<span style="color: #0066CC;">onReleaseOutside</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onRollOver</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">// override in sub-class</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onRollOut</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">// override in sub-class</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onPress</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">// override in sub-class</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onRelease</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">// override in sub-class</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onReleaseOutside</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">// override in sub-class</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">enabled</span><span style="color: #66cc66;">&#40;</span>mode:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">// override in sub-class</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>&lt;ButtonManager Class&gt;</strong></p>
<p>추상클래스인 AbstractSimpleButton 클래스 타입을 이용하여 버튼의 등록및 이벤트 위임을 처리하고 있다.<br />
어떠한 구상클래스(concrete class)도 사용되지 않았기 때문에 실제 구현과 완전히 분리되어 코드를 처리할 수 있다.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">ui</span>.<span style="color: #0066CC;">button</span>.<span style="color: #006600;">AbstractSimpleButton</span>;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">ButtonEvent</span>;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">Dispatcher</span>;
<span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">ui</span>.<span style="color: #0066CC;">button</span>.<span style="color: #006600;">ButtonManager</span> <span style="color: #0066CC;">extends</span> Dispatcher<span style="color: #66cc66;">&#123;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _buttonSet:<span style="color: #0066CC;">Array</span>;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _selectButton:AbstractSimpleButton;
&nbsp;
<span style="color: #808080; font-style: italic;">/**---------------------------------------------------------------------------
* Constructor function
*----------------------------------------------------------------------------*/</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> ButtonManager<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
initialize<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">//==================================================================</span>
<span style="color: #808080; font-style: italic;">///////////public method //////////////////////////////////////////////</span>
<span style="color: #808080; font-style: italic;">//==================================================================</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> addItem<span style="color: #66cc66;">&#40;</span>item:AbstractSimpleButton<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
_buttonSet.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>item<span style="color: #66cc66;">&#41;</span>;
registerListener<span style="color: #66cc66;">&#40;</span>item<span style="color: #66cc66;">&#41;</span>;
killListener<span style="color: #66cc66;">&#40;</span>item<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getItemAt<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">index</span>:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:AbstractSimpleButton<span style="color: #66cc66;">&#123;</span>
<span style="color: #b1b100;">return</span> AbstractSimpleButton<span style="color: #66cc66;">&#40;</span>_buttonSet<span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">index</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> kill<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i <span style="color: #b1b100;">in</span> _buttonSet<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
AbstractSimpleButton<span style="color: #66cc66;">&#40;</span>_buttonSet<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">enabled</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> live<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i <span style="color: #b1b100;">in</span> _buttonSet<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
AbstractSimpleButton<span style="color: #66cc66;">&#40;</span>_buttonSet<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">enabled</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">//==================================================================</span>
<span style="color: #808080; font-style: italic;">///////////event handler //////////////////////////////////////////////</span>
<span style="color: #808080; font-style: italic;">//==================================================================</span>
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onPress</span><span style="color: #66cc66;">&#40;</span>evt:ButtonEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
startEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ButtonEvent<span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_PRESS</span>,evt.<span style="color: #0066CC;">target</span>,evt.<span style="color: #006600;">currentMovieClip</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onRelease</span><span style="color: #66cc66;">&#40;</span>evt:ButtonEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">enabled</span><span style="color: #66cc66;">&#40;</span>getSelectButton<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,<span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0066CC;">enabled</span><span style="color: #66cc66;">&#40;</span>AbstractSimpleButton<span style="color: #66cc66;">&#40;</span>evt.<span style="color: #0066CC;">target</span><span style="color: #66cc66;">&#41;</span>,<span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
setSelectButton<span style="color: #66cc66;">&#40;</span>AbstractSimpleButton<span style="color: #66cc66;">&#40;</span>evt.<span style="color: #0066CC;">target</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
startEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ButtonEvent<span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_RELEASE</span>,evt.<span style="color: #0066CC;">target</span>,evt.<span style="color: #006600;">currentMovieClip</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onRollOver</span><span style="color: #66cc66;">&#40;</span>evt:ButtonEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
startEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ButtonEvent<span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_ROLL_OVER</span>,evt.<span style="color: #0066CC;">target</span>,evt.<span style="color: #006600;">currentMovieClip</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onRollOut</span><span style="color: #66cc66;">&#40;</span>evt:ButtonEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
startEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ButtonEvent<span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_ROLL_OVER</span>,evt.<span style="color: #0066CC;">target</span>,evt.<span style="color: #006600;">currentMovieClip</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">//==================================================================</span>
<span style="color: #808080; font-style: italic;">///////////private method //////////////////////////////////////////////</span>
<span style="color: #808080; font-style: italic;">//==================================================================</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> initialize<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
_buttonSet=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> setSelectButton<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">button</span>:AbstractSimpleButton<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
_selectButton=<span style="color: #0066CC;">button</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> getSelectButton<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:AbstractSimpleButton<span style="color: #66cc66;">&#123;</span>
<span style="color: #b1b100;">return</span> _selectButton;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> registerListener<span style="color: #66cc66;">&#40;</span>item:AbstractSimpleButton<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
item.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_ROLL_OVER</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
item.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_ROLL_OUT</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
item.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_PRESS</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
item.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_RELEASE</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> killListener<span style="color: #66cc66;">&#40;</span>item:AbstractSimpleButton<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #000000; font-weight: bold;">var</span> owner:ButtonManager=<span style="color: #0066CC;">this</span>;
item.<span style="color: #006600;">getController</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">onUnload</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
item.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_ROLL_OVER</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
item.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_ROLL_OUT</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
item.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_PRESS</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
item.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_RELEASE</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">enabled</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">button</span>:AbstractSimpleButton,mode:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">button</span>.<span style="color: #0066CC;">enabled</span><span style="color: #66cc66;">&#40;</span>mode<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>event handler 함수를 보면 등록되어 있는 추상클래스 버튼에서 발생한 이벤트를 받아서 다시 최종적으로 ButtonManager 에 등록되어있는 이벤트 리스너 함수로 넘겨준다. 이 과정에서 필요한 버튼 이벤트 오브젝만 넘겨준다.</p>
<p><strong>&lt;ButtonEvent Class&gt;<br />
</strong>버튼에 대한 이벤트 정보를 담고 있는 이벤트 오브젝트.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">ButtonEvent</span> <span style="color: #0066CC;">extends</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> ON_ROLL_OVER:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;onRollOver&quot;</span>;
<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> ON_ROLL_OUT:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;onRollOut&quot;</span>;
<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> ON_PRESS:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;onPress&quot;</span>;
<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> ON_RELEASE:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;onRelease&quot;</span>;
<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> ON_RELEASE_OUTSIDE:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;onReleaseOutside&quot;</span>;
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> currentMovieClip:<span style="color: #0066CC;">MovieClip</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">/**--------------------------------------------------------------------------
*constructor function
*@param Type : String, 이벤트 핸들러 메서드
*---------------------------------------------------------------------------*/</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> ButtonEvent<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Type</span> : <span style="color: #0066CC;">String</span>,Source : <span style="color: #0066CC;">Object</span>,curMovieClip:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">super</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Type</span>,Source<span style="color: #66cc66;">&#41;</span>;
currentMovieClip=curMovieClip;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>&lt;SampleConcreteButton  Class&gt;</strong></p>
<p>실제 버튼 기능을 구현하기 위한 구상 클래스. 단순히 버튼 롤오버 반응과 릴리즈시 활성체크를 구현하였다.<br />
생성하려는 버튼의 기능에 따라 이 클래스는 다르게 구성된다. 물론 추상메소드로서 작용하는<br />
AbstractSimpleButton 클래스의 onRollOver,onRollOut,onRelease,onReleaseOutside, enabled<br />
는 오버라이드(override) 하여 구현하여야 한다.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">ui</span>.<span style="color: #0066CC;">button</span>.<span style="color: #006600;">AbstractSimpleButton</span>;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">ButtonEvent</span>;
<span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">ui</span>.<span style="color: #0066CC;">button</span>.<span style="color: #006600;">SampleConcreteButton</span> <span style="color: #0066CC;">extends</span> AbstractSimpleButton <span style="color: #66cc66;">&#123;</span>
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> buttonIndex:<span style="color: #0066CC;">Number</span>;
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> SampleConcreteButton<span style="color: #66cc66;">&#40;</span>inMc : <span style="color: #0066CC;">MovieClip</span>,inButtonIndex<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">super</span><span style="color: #66cc66;">&#40;</span>inMc<span style="color: #66cc66;">&#41;</span>;
buttonIndex=inButtonIndex;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onRollOver</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">gotoAndStop</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
startEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ButtonEvent<span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_ROLL_OVER</span>,<span style="color: #0066CC;">this</span>,getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onRollOut</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">gotoAndStop</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
startEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ButtonEvent<span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_ROLL_OUT</span>,<span style="color: #0066CC;">this</span>,getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onRelease</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
startEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ButtonEvent<span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_RELEASE</span>,<span style="color: #0066CC;">this</span>,getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onReleaseOutside</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
startEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ButtonEvent<span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_RELEASE</span>,<span style="color: #0066CC;">this</span>,getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">enabled</span><span style="color: #66cc66;">&#40;</span>mode:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">enabled</span>=mode;
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>mode<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">gotoAndStop</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #66cc66;">&#123;</span>
getController<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">gotoAndStop</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>&lt;sample code&gt;<br />
</strong>위에서 제작한 클래스를 활용하여 버튼 클래스를 생성하고 등록하는 코드<br />
간단한 4개의 버튼을 구현하고 있다. 사용자는 SampleConcreteButton 를 만들어 버튼을 등록하기만 하면 모든 이벤트를 한꺼번에 관리할 수 있다.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">ui</span>.<span style="color: #0066CC;">button</span>.<span style="color: #006600;">ButtonManager</span>;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">ui</span>.<span style="color: #0066CC;">button</span>.<span style="color: #006600;">AbstractSimpleButton</span>;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">ui</span>.<span style="color: #0066CC;">button</span>.<span style="color: #006600;">SampleConcreteButton</span>;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">ButtonEvent</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> buttonMgr:ButtonManager=<span style="color: #000000; font-weight: bold;">new</span> ButtonManager<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
buttonMgr.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_RELEASE</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
buttonMgr.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> SampleConcreteButton<span style="color: #66cc66;">&#40;</span>number1_mc,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
buttonMgr.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> SampleConcreteButton<span style="color: #66cc66;">&#40;</span>number2_mc,<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
buttonMgr.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> SampleConcreteButton<span style="color: #66cc66;">&#40;</span>number3_mc,<span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
buttonMgr.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> SampleConcreteButton<span style="color: #66cc66;">&#40;</span>number4_mc,<span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//event handler</span>
<span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onRelease</span><span style="color: #66cc66;">&#40;</span>evt:ButtonEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
result_txt.<span style="color: #0066CC;">text</span>=<span style="color: #ff0000;">&quot;onRelease event : &quot;</span>+evt.<span style="color: #006600;">currentMovieClip</span>+<span style="color: #ff0000;">&quot;-----&amp;gt;&quot;</span>+evt.<span style="color: #0066CC;">target</span>.<span style="color: #006600;">buttonIndex</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">//Release event</span>
<span style="color: #000000; font-weight: bold;">var</span> numberButton:AbstractSimpleButton=buttonMgr.<span style="color: #006600;">getItemAt</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
numberButton.<span style="color: #0066CC;">onRelease</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ButtonEvent<span style="color: #66cc66;">&#40;</span>ButtonEvent.<span style="color: #006600;">ON_RELEASE</span>,numberButton<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>위 코드에는 ButtonManager에 등록되어있는 리스너가 onRelease 이벤트 밖에 없기 때문에<br />
릴리즈 이벤트만 최종적으로 처리한다. 다른 버튼 이벤트를 처리하고 싶으면 리스너에 이벤트를<br />
추가 하여 이벤트 핸들러 함수만 구현하면 된다.</p>
<p>등록된 모든 이벤트는  ButtonManager 의 이벤트 핸들러 함수를 통해 전달된다. 따라서 버튼에 대한 이벤트 플로우를 한곳에 집중할 수 있으며 기존에 코드에 종속되어있는 버튼에 비해 유연성이 크게 향상된다.</p>
<p>sample code 에서 맨 마직막 부분의 release event 부분은 사용자가 마우스를 통해 버튼을<br />
클릭해서 release event 를 발생시키는 것이 아니라 직접 임의로 발생시킬 수 있다.</p>
<p><a href="/blog/wp-content/uploads/2007/06/buttonManager.zip" target="_self">download sample</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kimkijeung.com/2007/06/28/buttons-using-a-design-pattern/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ColorMatrixFilter TweenEngine</title>
		<link>http://kimkijeung.com/2007/03/19/colormatrixfilter-tweenengine/</link>
		<comments>http://kimkijeung.com/2007/03/19/colormatrixfilter-tweenengine/#comments</comments>
		<pubDate>Mon, 19 Mar 2007 09:05:19 +0000</pubDate>
		<dc:creator>vkimone</dc:creator>
				<category><![CDATA[Flash-AS2.0]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[ColorMatrixFilter]]></category>
		<category><![CDATA[TweenEngine]]></category>

		<guid isPermaLink="false">http://vkimone.inblog.kr/?p=434</guid>
		<description><![CDATA[ColorMatrixFilter 클래스를 이용하면  이미지의 각 픽셀의 RGBA 색상 및 알파 값에 4 x 5 행렬 변환을 적용하여 saturation 또는 contrast 또는  brightness 를 적용할수 있다. 물론 각각의 ColorMatrixFilter 에 적용되는 matrix 속성값을 다르게 설정하여야 한다. 이 예제에서 활용한 ColorMatrix 는 Mario Klingemann(http://www.quasimondo.com) 가 제작한 소스를 이용하여 트윈클래스를 제작하였다. 기본적인 클래스 구조는 이전의 트윈클래스와 같다. 객체속성을 이용하여 for~in [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #333333;">ColorMatrixFilter 클래스를 이용하면  이미지의 각 픽셀의 RGBA 색상 및 알파 값에 4 x 5 행렬 변환을 적용하여 saturation 또는 contrast 또는  brightness 를 적용할수 있다. 물론 각각의 ColorMatrixFilter 에 적용되는 matrix 속성값을 다르게 설정하여야 한다.</span></p>
<p><span style="color: #ff9900;"><span style="color: #333333;"> 이 예제에서 활용한 ColorMatrix 는 Mario Klingemann(<a href="http://www.quasimondo.com">http://www.quasimondo.com</a>) 가 제작한 소스를 이용하여 트윈클래스를 제작하였다.<br />
기본적인 클래스 구조는 이전의 트윈클래스와 같다. 객체속성을 이용하여 for~in 구문으로 트윈을 적용하였다. 다른 객체에 비해 적용되는 속성의 갯수(matrix 속성)가 20개로써 많기 때문에 이미지를 크게 하거나 트윈길이를 너무 길게할 경우 느려질 수가 있다. 또한 트윈이후 이전 트윈클래스와 같이 콜백함수를 호출할 수 있다.</span></span></p>
<p><span style="color: #333333;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="100" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="menu" value="false" /><param name="src" value="/blog/wp-content/uploads/2009/12/colorMatrixTween.swf" /><embed type="application/x-shockwave-flash" width="500" height="100" src="/blog/wp-content/uploads/2009/12/colorMatrixTween.swf" menu="false"></embed></object></span></p>
<p><strong><a href="blog/wp-content/uploads/2009/12/colorMatrixTween.zip" target="_self">download sample</a></strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//==================================================================</span>
<span style="color: #808080; font-style: italic;">//@class name  :  ColorMatrixTween.as</span>
<span style="color: #808080; font-style: italic;">//@author          : vkimone. KimKiJeung  (http://kimkijeung.com)</span>
<span style="color: #808080; font-style: italic;">//@last update   : 2007. 03. 19</span>
<span style="color: #808080; font-style: italic;">//@version         : V1.0</span>
<span style="color: #808080; font-style: italic;">//==================================================================</span>
<span style="color: #808080; font-style: italic;">/**
 @description
* 무비클립의  ColorMatrixFilter 트윈 클래스 : 이징함수 설정으로 조절 
&nbsp;
* @example
*     &lt;code&gt;
*     ColorMatrixTween.tween(targetMc,0,ColorMatrixTween.SATURATION,Regular.easeOut,30,
             {{func: callBackFunction,obj: functionScope, param: [파라미터 배열로 들어감]}}
*     &lt;/code&gt;
*/</span>
&nbsp;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">filters</span>.<span style="color: #006600;">ColorMatrixFilter</span>;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">util</span>.<span style="color: #006600;">filters</span>.<span style="color: #006600;">ColorMatrix</span>;
<span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">util</span>.<span style="color: #006600;">transitions</span>.<span style="color: #006600;">tween</span>.<span style="color: #006600;">ColorMatrixTween</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> SATURATION:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">&quot;saturation&quot;</span>;
  <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> CONTRAST:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">&quot;contrast&quot;</span>;
  <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> BRIGHTNESS:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">&quot;brightness&quot;</span>;
&nbsp;
 <span style="color: #808080; font-style: italic;">/**---------------------------------------------------------------------
  *@description  saturation, contrast, brightness 트랜지션
    @param mc : MovieClip, 적용무비클립
    @param value : Number , 적용 percentage
    @param mode :String , saturation or contrast or brightness mode
    @param func : Function, easing function
   @param durationFrame : Number, 지속프레임
*----------------------------------------------------------------------*/</span>
<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> tween<span style="color: #66cc66;">&#40;</span>mc:<span style="color: #0066CC;">MovieClip</span>,value:<span style="color: #0066CC;">Number</span>,mode:<span style="color: #0066CC;">String</span>,func:<span style="color: #000000; font-weight: bold;">Function</span>,durationFrame:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">time</span>:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">1</span>;
<span style="color: #000000; font-weight: bold;">var</span> beginning:<span style="color: #0066CC;">Array</span>=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> change:<span style="color: #0066CC;">Array</span>=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
 <span style="color: #000000; font-weight: bold;">var</span> mat:ColorMatrix = <span style="color: #000000; font-weight: bold;">new</span> ColorMatrix<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
 <span style="color: #b1b100;">switch</span><span style="color: #66cc66;">&#40;</span>mode<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
   <span style="color: #b1b100;">case</span> SATURATION :
     mat.<span style="color: #006600;">adjustSaturation</span><span style="color: #66cc66;">&#40;</span>value<span style="color: #66cc66;">/</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;
     <span style="color: #b1b100;">break</span>;
&nbsp;
   <span style="color: #b1b100;">case</span> CONTRAST :
     mat.<span style="color: #006600;">adjustContrast</span><span style="color: #66cc66;">&#40;</span>value<span style="color: #66cc66;">/</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;
     <span style="color: #b1b100;">break</span>;
&nbsp;
   <span style="color: #b1b100;">case</span> BRIGHTNESS :
     mat.<span style="color: #006600;">adjustBrightness</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">*</span>value<span style="color: #66cc66;">/</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;
     <span style="color: #b1b100;">break</span>;
  <span style="color: #66cc66;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">var</span> cm:ColorMatrixFilter = <span style="color: #000000; font-weight: bold;">new</span> ColorMatrixFilter<span style="color: #66cc66;">&#40;</span>mat.<span style="color: #006600;">matrix</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #000000; font-weight: bold;">var</span> startMatrix:<span style="color: #0066CC;">Array</span>=
                       <span style="color: #66cc66;">&#40;</span>mc.<span style="color: #006600;">filters</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">matrix</span>==<span style="color: #0066CC;">undefined</span><span style="color: #66cc66;">&#41;</span> ? ColorMatrix.<span style="color: #006600;">IDENTITY</span> : mc.<span style="color: #006600;">filters</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">matrix</span>;
  <span style="color: #000000; font-weight: bold;">var</span> targetMatrix:<span style="color: #0066CC;">Array</span>=mat.<span style="color: #006600;">matrix</span>;
&nbsp;
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i <span style="color: #b1b100;">in</span> targetMatrix<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
  beginning.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>startMatrix<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
  change.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>targetMatrix<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>-startMatrix<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
       <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">type</span>=<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">typeof</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>==<span style="color: #ff0000;">&quot;object&quot;</span><span style="color: #66cc66;">&#41;</span>? <span style="color: #000000; font-weight: bold;">true</span> : <span style="color: #000000; font-weight: bold;">false</span>;
       <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">type</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">var</span> referObj=<span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#93;</span>;
       <span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">var</span> p:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#93;</span>;
        <span style="color: #000000; font-weight: bold;">var</span> referObj=<span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#93;</span>;
       <span style="color: #66cc66;">&#125;</span>
  mc.<span style="color: #0066CC;">onEnterFrame</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">var</span> objIdx:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
  <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i <span style="color: #b1b100;">in</span> targetMatrix<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
   targetMatrix<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>=func<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">time</span>,beginning<span style="color: #66cc66;">&#91;</span>objIdx<span style="color: #66cc66;">&#93;</span>,change<span style="color: #66cc66;">&#91;</span>objIdx<span style="color: #66cc66;">&#93;</span>,durationFrame,p<span style="color: #66cc66;">&#41;</span>;
   objIdx++;
   <span style="color: #66cc66;">&#125;</span>
   targetColMatrixFilter.<span style="color: #006600;">matrix</span>=targetMatrix;
   mc.<span style="color: #006600;">filters</span>=<span style="color: #66cc66;">&#91;</span>targetColMatrixFilter<span style="color: #66cc66;">&#93;</span>;
   <span style="color: #0066CC;">time</span>++;
  <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>time<span style="color: #66cc66;">&amp;</span>gt;durationFrame<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
   <span style="color: #0066CC;">delete</span> <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">onEnterFrame</span>;
   <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>referObj<span style="color: #66cc66;">!</span>=<span style="color: #0066CC;">undefined</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
    referObj.<span style="color: #006600;">func</span>.<span style="color: #0066CC;">apply</span><span style="color: #66cc66;">&#40;</span>referObj.<span style="color: #006600;">obj</span>,referObj.<span style="color: #006600;">param</span><span style="color: #66cc66;">&#41;</span>;
   <span style="color: #66cc66;">&#125;</span>
&nbsp;
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">import</span>  com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">util</span>.<span style="color: #006600;">transitions</span>.<span style="color: #006600;">tween</span>.<span style="color: #006600;">FilterTween</span>;
<span style="color: #0066CC;">import</span>  mx.<span style="color: #006600;">transitions</span>.<span style="color: #006600;">easing</span>.<span style="color: #66cc66;">*</span>;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">util</span>.<span style="color: #006600;">filters</span>.<span style="color: #006600;">ColorMatrix</span>;
<span style="color: #808080; font-style: italic;">//SATURATION (from 0  to 100)</span>
image.<span style="color: #0066CC;">onRollOver</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 ColorMatrixTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image,<span style="color: #cc66cc;">0</span>,ColorMatrixTween.<span style="color: #006600;">SATURATION</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
image.<span style="color: #0066CC;">onRollOut</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 ColorMatrixTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image,<span style="color: #cc66cc;">100</span>,ColorMatrixTween.<span style="color: #006600;">SATURATION</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">//CONTRAST (from 0  to 100)</span>
image2.<span style="color: #0066CC;">onRollOver</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 ColorMatrixTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image2,<span style="color: #cc66cc;">100</span>,ColorMatrixTween.<span style="color: #006600;">CONTRAST</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
image2.<span style="color: #0066CC;">onRollOut</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 ColorMatrixTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image2,<span style="color: #cc66cc;">0</span>,ColorMatrixTween.<span style="color: #006600;">CONTRAST</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">//BRIGHTNESS (from -100  to 100)</span>
image3.<span style="color: #0066CC;">onRollOver</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
ColorMatrixTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image3,<span style="color: #cc66cc;">100</span>,ColorMatrixTween.<span style="color: #006600;">BRIGHTNESS</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
image3.<span style="color: #0066CC;">onRollOut</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
ColorMatrixTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image3,<span style="color: #cc66cc;">0</span>,ColorMatrixTween.<span style="color: #006600;">BRIGHTNESS</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://kimkijeung.com/2007/03/19/colormatrixfilter-tweenengine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filter TweenEngine</title>
		<link>http://kimkijeung.com/2007/03/11/424/</link>
		<comments>http://kimkijeung.com/2007/03/11/424/#comments</comments>
		<pubDate>Sun, 11 Mar 2007 14:54:31 +0000</pubDate>
		<dc:creator>vkimone</dc:creator>
				<category><![CDATA[Flash-AS2.0]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[TweenEngine]]></category>

		<guid isPermaLink="false">http://vkimone.inblog.kr/?p=424</guid>
		<description><![CDATA[무비클립 속성에 비해 다루기가 까다로워 필터 트원은 좀처럼 사용하지는 않았다. 특히 프레임으로 모션트윈은 어느정도 사용했지만 스크립트를 이용한 조절은 거의&#8230;&#8230; 전반적으로 필터에 대해 다시 살펴보면서 이번기회에 필터트윈 클래스를 만들어 보았다. 새로 만들긴 했지만 기존에 만들었던 무비클립 Tween 클래스와 기본 구조는 같다. 어짜피 필터 트원이라는것이 필터속성을 시간단위로 변화를 주는 것이기 때문에 무비클립의 그것과 다르지 않았다. 무비클립 트윈클래스와 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff9900;"><span style="color: #333333;">무비클립 속성에 비해 다루기가 까다로워 필터 트원은 좀처럼 사용하지는 않았다.<br />
특히 프레임으로 모션트윈은 어느정도 사용했지만 스크립트를 이용한 조절은 거의&#8230;&#8230;</span></span></p>
<p><span style="color: #ff9900;"><span style="color: #333333;">전반적으로 필터에 대해 다시 살펴보면서 이번기회에 필터트윈 클래스를 만들어 보았다.<br />
새로 만들긴 했지만 기존에 만들었던 무비클립 Tween 클래스와 기본 구조는 같다.<br />
어짜피 필터 트원이라는것이 필터속성을 시간단위로 변화를 주는 것이기 때문에 무비클립의 그것과 다르지 않았다.</span></span></p>
<p>무비클립 트윈클래스와 다른점은 인자값으로 적용할 필터오브젝트를 생성해서 넘겨주는 것이다.<br />
그리고 그 필터속성의 변화값을 무비클립 filters 속성에 적용해 주는 것이다.<br />
그리고 다중필터 지원은 동시에 여러가지 필터를 적용하는 경우가 많지 않을뿐더러 쓸데없이 파라미터가 길어질 염려가 있어 적용하지 않았다.</p>
<p><span style="color: #333333;">필터 적용범위는 필터속성의 데이타 타입이 Number 일경우에만 적용해야 한다. 따라서 ColorMatrixFilter와 같이 속성값이 matrix 일 경우 이 클래스로는 트윈이 적용되지 않는다. 그 이외의 모든 필터의 속성에 대해서는 트윈이 가능하다.<br />
또한 필터 속성마다 해당하는 속성 범위가 존재한다. 이점을 유의해서 적용해야한다.</span></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="100" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="menu" value="false" /><param name="src" value="blog/wp-content/uploads/2007/03/filterTween.swf" /><embed type="application/x-shockwave-flash" width="500" height="100" src="blog/wp-content/uploads/2007/03/filterTween.swf" menu="false"></embed></object></p>
<p><a href="/blog/wp-content/uploads/2007/03/filterTweenSample.zip" target="_self">download sample</a></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//==================================================================</span>
<span style="color: #808080; font-style: italic;">//@class name  :  FilterTween.as</span>
<span style="color: #808080; font-style: italic;">//@author          : vkimone. KimKiJeung  (http://kimkijeung.com)</span>
<span style="color: #808080; font-style: italic;">//@last update   : 2007. 03. 07</span>
<span style="color: #808080; font-style: italic;">//@version         : V1.0</span>
<span style="color: #808080; font-style: italic;">//==================================================================</span>
<span style="color: #808080; font-style: italic;">/**
 @description
* 무비클립의 필터 속성  트윈 클래스 : 이징함수 설정으로 조절
* 트원할 필터속성의 갯수에 관계없이 오브젝트로 적용 가능
*
* @caution
*  -반드시 트원할 필터 속성의 데이타 타입이 Number 일경우에만 적용할수 있다.
    String,Boolean,Array 는 적용할 수 없다.
   -다중필터 적용은 지원하지 않는다.
*
* @example
*     &lt;code&gt;
*        Filtertween.tween(targetMc,{blurX:36,blurY:36},Regular.easeOut,30,
       {{func: callBackFunction,obj: functionScope, param: [파라미터 배열로 들어감]}}
*     &lt;/code&gt;
*/</span>
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">filters</span>.<span style="color: #006600;">BitmapFilter</span>;
<span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">util</span>.<span style="color: #006600;">transitions</span>.<span style="color: #006600;">tween</span>.<span style="color: #006600;">FilterTween</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">/**------------------------------------------------------------------------
 * @param mc : MovieClip, 적용무비클립
 * @param filter : BitmapFilter , 적용할 필터 객체
 * @param obj : Object, 단일 필터속성 (필터 속성 data type 이 Number 일 경우)
                                                     ex. {blurX:32,blurY:32}
 * @param func : Function, easing function
 * @param durationFrame : Number, 지속프레임
 * @param referObj :[option] reference object(caution--&amp;gt; 파라미터값 반드시 배열요소로 입력)
*----------------------------------------------------------------------*/</span>
<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> tween<span style="color: #66cc66;">&#40;</span>mc:<span style="color: #0066CC;">MovieClip</span>,filter:BitmapFilter,obj:<span style="color: #0066CC;">Object</span>,func:<span style="color: #000000; font-weight: bold;">Function</span>,durationFrame:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">time</span>:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">1</span>;
<span style="color: #000000; font-weight: bold;">var</span> beginning:<span style="color: #0066CC;">Array</span>=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> change:<span style="color: #0066CC;">Array</span>=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i <span style="color: #b1b100;">in</span> obj<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
  beginning.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>filter<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
  change.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>obj<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>-filter<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
       <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">type</span>=<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">typeof</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>==<span style="color: #ff0000;">&quot;object&quot;</span><span style="color: #66cc66;">&#41;</span>? <span style="color: #000000; font-weight: bold;">true</span> : <span style="color: #000000; font-weight: bold;">false</span>;
       <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">type</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">var</span> referObj=<span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#93;</span>;
       <span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">var</span> p:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#93;</span>;
        <span style="color: #000000; font-weight: bold;">var</span> referObj=<span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#93;</span>;
       <span style="color: #66cc66;">&#125;</span>
  mc.<span style="color: #0066CC;">onEnterFrame</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">var</span> objIdx:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
  <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i <span style="color: #b1b100;">in</span> obj<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
   filter<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>=func<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">time</span>,beginning<span style="color: #66cc66;">&#91;</span>objIdx<span style="color: #66cc66;">&#93;</span>,change<span style="color: #66cc66;">&#91;</span>objIdx<span style="color: #66cc66;">&#93;</span>,durationFrame,p<span style="color: #66cc66;">&#41;</span>;
   mc.<span style="color: #006600;">filters</span>=<span style="color: #66cc66;">&#91;</span>filter<span style="color: #66cc66;">&#93;</span>; <span style="color: #808080; font-style: italic;">//필터 적용부분</span>
   objIdx++;
   <span style="color: #66cc66;">&#125;</span>
   <span style="color: #0066CC;">time</span>++;
  <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>time<span style="color: #66cc66;">&amp;</span>gt;durationFrame<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
   <span style="color: #0066CC;">delete</span> <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">onEnterFrame</span>;
   <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>referObj<span style="color: #66cc66;">!</span>=<span style="color: #0066CC;">undefined</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
    referObj.<span style="color: #006600;">func</span>.<span style="color: #0066CC;">apply</span><span style="color: #66cc66;">&#40;</span>referObj.<span style="color: #006600;">obj</span>,referObj.<span style="color: #006600;">param</span><span style="color: #66cc66;">&#41;</span>;
   <span style="color: #66cc66;">&#125;</span>
&nbsp;
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">import</span>  com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">util</span>.<span style="color: #006600;">transitions</span>.<span style="color: #006600;">tween</span>.<span style="color: #006600;">FilterTween</span>;
<span style="color: #0066CC;">import</span>  mx.<span style="color: #006600;">transitions</span>.<span style="color: #006600;">easing</span>.<span style="color: #66cc66;">*</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">filters</span>.<span style="color: #66cc66;">*</span>;
<span style="color: #000000; font-weight: bold;">var</span> blurFilter:BlurFilter=<span style="color: #000000; font-weight: bold;">new</span> BlurFilter<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> dropShadowFilter:DropShadowFilter=<span style="color: #000000; font-weight: bold;">new</span> DropShadowFilter<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">120</span>,0x000000,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> glowFilter:GlowFilter=<span style="color: #000000; font-weight: bold;">new</span> GlowFilter<span style="color: #66cc66;">&#40;</span>0x6E7D74,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">16</span>,<span style="color: #cc66cc;">16</span>,<span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">//BlurFilter</span>
image.<span style="color: #0066CC;">onRollOver</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 FilterTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image,blurFilter,<span style="color: #66cc66;">&#123;</span>blurX:<span style="color: #cc66cc;">8</span>,blurY:<span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#125;</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">15</span>,
        <span style="color: #66cc66;">&#123;</span>func:onFilterTweenFinished,obj:<span style="color: #0066CC;">_root</span>,param:<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;blur&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
image.<span style="color: #0066CC;">onRollOut</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 FilterTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image,blurFilter,<span style="color: #66cc66;">&#123;</span>blurX:<span style="color: #cc66cc;">0</span>,blurY:<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#125;</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">15</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">//DropShadowFilter</span>
image2.<span style="color: #0066CC;">onRollOver</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 FilterTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image2,dropShadowFilter,<span style="color: #66cc66;">&#123;</span>distance:<span style="color: #cc66cc;">4</span>,blurX:<span style="color: #cc66cc;">4</span>,blurY:<span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#125;</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">15</span>,
        <span style="color: #66cc66;">&#123;</span>func:onFilterTweenFinished,obj:<span style="color: #0066CC;">_root</span>,param:<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;dropShadow&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
image2.<span style="color: #0066CC;">onRollOut</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 FilterTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image2,dropShadowFilter,<span style="color: #66cc66;">&#123;</span>distance:<span style="color: #cc66cc;">0</span>,blurX:<span style="color: #cc66cc;">4</span>,blurY:<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#125;</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">15</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">//GlowFilter</span>
image3.<span style="color: #0066CC;">onRollOver</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 FilterTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image3,glowFilter,<span style="color: #66cc66;">&#123;</span>alpha:<span style="color: #cc66cc;">1</span>,blurX:<span style="color: #cc66cc;">36</span>,blurY:<span style="color: #cc66cc;">36</span><span style="color: #66cc66;">&#125;</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">15</span>,
        <span style="color: #66cc66;">&#123;</span>func:onFilterTweenFinished,obj:<span style="color: #0066CC;">_root</span>,param:<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;glow&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
image3.<span style="color: #0066CC;">onRollOut</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 FilterTween.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>image3,glowFilter,<span style="color: #66cc66;">&#123;</span>alpha:<span style="color: #cc66cc;">0</span>,blurX:<span style="color: #cc66cc;">0</span>,blurY:<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#125;</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">15</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> onFilterTweenFinished<span style="color: #66cc66;">&#40;</span>evt<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
 <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;filterTween finished.....&quot;</span>+evt<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://kimkijeung.com/2007/03/11/424/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Converting to a Cartesian coordinates</title>
		<link>http://kimkijeung.com/2007/03/06/converting-to-a-cartesian-coordinates/</link>
		<comments>http://kimkijeung.com/2007/03/06/converting-to-a-cartesian-coordinates/#comments</comments>
		<pubDate>Tue, 06 Mar 2007 12:58:09 +0000</pubDate>
		<dc:creator>vkimone</dc:creator>
				<category><![CDATA[Flash-AS2.0]]></category>
		<category><![CDATA[Flash-Tip]]></category>
		<category><![CDATA[Math & Physics]]></category>

		<guid isPermaLink="false">http://vkimone.inblog.kr/?p=417</guid>
		<description><![CDATA[동적으로 여러개의 MovieClip 을 원형으로 배열할때 직교좌표계 사용하는 것보다 극좌표계를 사용하면 훨씬 다루기가 쉽다. 또한 x,y 와 같은 점을 다룰경우 Point 클래스를 이용하면 각 점간의 수학적인 연산에 있어 기본적으로 Point  클래스의 메서드를 이용하여 쉽게 처리할 수 있다. 극좌표를 직교좌표로 바꿀때도 기본으로 제공해주는 메서드를 사용하면 된다. polar (Point.polar method) public static polar(len: Number, angle: Number) : [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;"><span style="color: #000000;"><span style="color: #333333;">동적으로 여러개의 MovieClip 을 원형으로 배열할때 직교좌표계 사용하는 것보다 극좌표계를 사용하면 훨씬 다루기가 쉽다. 또한 x,y 와 같은 점을 다룰경우 Point 클래스를 이용하면 각 점간의 수학적인 연산에 있어 기본적으로 Point  클래스의 메서드를 이용하여 쉽게 처리할 수 있다.</span></span></span></p>
<p><span style="color: #0000ff;"><span style="color: #000000;"><span style="color: #333333;"> </span><span style="color: #333333;">극좌표를 직교좌표로 바꿀때도 기본으로 제공해주는 메서드를 사용하면 된다.</span></span></span></p>
<p><span style="color: #333333;"><strong>polar (Point.polar method)<br />
</strong>public static polar(len: Number, angle: Number) : Point</span></p>
<p><span style="color: #333333;">Converts a pair of polar coordinates to a Cartesian point coordinate.</span></p>
<p><span style="color: #333333;"><strong>Parameters</strong><br />
len: Number &#8211; The length coordinate of the polar pair.<br />
angle: Number &#8211; The angle, in radians, of the polar pair.</span></p>
<p><span style="color: #333333;"><strong>Returns</strong><br />
Point &#8211; The Cartesian point.</span></p>
<p><img class="size-full wp-image-419 alignnone" title="1167762589" src="http://kimkijeung.com/blog/wp-content/uploads/2007/03/1167762589.jpg" alt="1167762589" width="477" height="234" /></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">geom</span>.<span style="color: #006600;">Point</span>;
<span style="color: #000000; font-weight: bold;">var</span> len:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">125</span>;
<span style="color: #000000; font-weight: bold;">var</span> angleInRadians:<span style="color: #0066CC;">Number</span> ;
<span style="color: #000000; font-weight: bold;">var</span> cartesianPoint:Point
<span style="color: #000000; font-weight: bold;">var</span> unitAngle:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">15</span>;
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i=<span style="color: #cc66cc;">1</span> ; i<span style="color: #66cc66;">&amp;</span>lt;=<span style="color: #cc66cc;">24</span> ; i++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #000000; font-weight: bold;">var</span> mc:<span style="color: #0066CC;">MovieClip</span>=<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">attachMovie</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;M_thumb&quot;</span>+i,<span style="color: #ff0000;">&quot;M_thumb&quot;</span>+i,i<span style="color: #66cc66;">&#41;</span>;
angleInRadians = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span><span style="color: #66cc66;">*</span>unitAngle<span style="color: #66cc66;">/</span><span style="color: #cc66cc;">180</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#40;</span>i-<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
cartesianPoint = Point.<span style="color: #006600;">polar</span><span style="color: #66cc66;">&#40;</span>len, angleInRadians<span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// 극 좌표를 직교좌표로 전환</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> offsetX:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">round</span><span style="color: #66cc66;">&#40;</span>cartesianPoint.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> offsetY:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">round</span><span style="color: #66cc66;">&#40;</span>cartesianPoint.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span>;
mc.<span style="color: #0066CC;">_x</span>=<span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">width</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span>+offsetX;
mc.<span style="color: #0066CC;">_y</span>=<span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">height</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span>+offsetY;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>굳이 point 클래스를 사용하지 않고서도 극좌표계를 직교좌표계로 간단한 삼각함수를 사용하여 다음과 같이도 쉽게 바꿀수 있다.</p>
<p><strong>x1=x0+(Math.cos(angle)*radius);<br />
y1=y0+(Math.sin(angle)*radius);<br />
</strong><br />
하지만 Point 클래스를 사용하여 좌표를 구성한다면 코드의 일관성에 있어서나 간결성에 있어 상당한 도움이 될것이다.</p>
]]></content:encoded>
			<wfw:commentRss>http://kimkijeung.com/2007/03/06/converting-to-a-cartesian-coordinates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IME-Input Method Editor</title>
		<link>http://kimkijeung.com/2007/02/07/ime-input-method-editor/</link>
		<comments>http://kimkijeung.com/2007/02/07/ime-input-method-editor/#comments</comments>
		<pubDate>Wed, 07 Feb 2007 02:41:34 +0000</pubDate>
		<dc:creator>vkimone</dc:creator>
				<category><![CDATA[Flash-AS2.0]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[IME]]></category>

		<guid isPermaLink="false">http://vkimone.inblog.kr/?p=400</guid>
		<description><![CDATA[IME(System.IME) Class를 이용하면 클라이언트 컴퓨터에서 실행되고 있는 flash player 에서 운영체제의 IME(Input Method Editor) 를 조절할 수 있다. IME 는 사용자의 문자입력을 받을수 있는 요소로서 흔히 사용하는 Input Textfield 나 TextArea, TextInput 와 같은 component 가 있다. 일정한 폼의 형태로 사용자의 텍스트 정보를 받아야 할 경우 흔히 Input Textfield 를 사용한다. 이때 우리나라와 같이 한글, [...]]]></description>
			<content:encoded><![CDATA[<p>IME(System.IME) Class를 이용하면 클라이언트 컴퓨터에서 실행되고 있는 flash player 에서 운영체제의 IME(Input Method Editor) 를 조절할 수 있다. IME 는 사용자의 문자입력을 받을수 있는 요소로서 흔히 사용하는 Input Textfield 나 TextArea, TextInput 와 같은 component 가 있다. 일정한 폼의 형태로 사용자의 텍스트 정보를 받아야 할 경우 흔히 Input Textfield 를 사용한다. 이때 우리나라와 같이 한글, 영문을 같이 병행하여 사용할 경우 사용자들은 한영키 전환을 잊고 입력하는 경우가 자주 발생한다. 이때 사용성을 높여주는 방법으로써 자동으로 입력 해당필드로 이동했을시 IME Mode 를 변경해 주는 것이다.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">util</span>.<span style="color: #0066CC;">system</span>.<span style="color: #006600;">IME</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">/**-------------------------------------------------------------------
    * @description IME Mode 설정
  *-------------------------------------------------------------------*/</span>
  <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> setIMEMode<span style="color: #66cc66;">&#40;</span>mode:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
  
   <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">System</span>.<span style="color: #0066CC;">capabilities</span>.<span style="color: #006600;">hasIME</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
   
   <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>mode==<span style="color: #ff0000;">&quot;KOREAN&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
      mode=<span style="color: #0066CC;">System</span>.<span style="color: #006600;">IME</span>.<span style="color: #006600;">KOREAN</span>;
   <span style="color: #66cc66;">&#125;</span>
   <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>mode==<span style="color: #ff0000;">&quot;ALPHANUMERIC&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
       mode=<span style="color: #0066CC;">System</span>.<span style="color: #006600;">IME</span>.<span style="color: #006600;">ALPHANUMERIC_HALF</span>;
   <span style="color: #66cc66;">&#125;</span>
  <span style="color: #66cc66;">&#125;</span>
  <span style="color: #0066CC;">System</span>.<span style="color: #006600;">IME</span>.<span style="color: #006600;">setConversionMode</span><span style="color: #66cc66;">&#40;</span>mode<span style="color: #66cc66;">&#41;</span>;
  
 <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&lt;</span>example code<span style="color: #66cc66;">&gt;</span>
 <span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">util</span>.<span style="color: #0066CC;">system</span>.<span style="color: #006600;">IME</span>;
 IME.<span style="color: #006600;">setIMEMode</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;KOREAN&quot;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// 한글전환시</span>
 IME.<span style="color: #006600;">setIMEMode</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ALPHANUMERIC&quot;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// 영문전환시</span></pre></div></div>

<p><span style="color: #333333;">각 필드에 포커스 되었을때 원하는 모드에 맞게 설정해 놓으면 사용자의 사용성이 개선될 수 있다.<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://kimkijeung.com/2007/02/07/ime-input-method-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Interval Class</title>
		<link>http://kimkijeung.com/2007/01/28/custom-interval-class/</link>
		<comments>http://kimkijeung.com/2007/01/28/custom-interval-class/#comments</comments>
		<pubDate>Sun, 28 Jan 2007 07:30:06 +0000</pubDate>
		<dc:creator>vkimone</dc:creator>
				<category><![CDATA[Flash-AS2.0]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[interaval]]></category>

		<guid isPermaLink="false">http://vkimone.inblog.kr/?p=397</guid>
		<description><![CDATA[&#60;Interval Class&#62; import com.dstrict.UB.events.Dispatcher; import com.dstrict.UB.management.IntervalEvent; /**-------------------------------------------------------------------------------- * @description 인터벌 생성및 실행 클래스 *    원하는 함수를 사용자가 원하는 횟수만큼 호출한후 onIntervalEnd 를 발행시킴... * * @implement *   Interval#onIntervalEnd * * @example * &#60;code&#62; *  _interval=new Interval();  _interval.addEventListener(IntervalEvent.ON_INTERVAL_END,this);  _interval.makeInterval(functionScope,functionReference,duration,loop,[parameter array]); &#160;  public function onIntervalEnd(evt:IntervalEvent):Void{     // 인터벌 이후에 이벤트를 사용하려면 구현...      [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="color: #0000ff; "><span style="color: #000000; ">&lt;Interval Class&gt;</span></span></strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">Dispatcher</span>;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">management</span>.<span style="color: #006600;">IntervalEvent</span>;
<span style="color: #808080; font-style: italic;">/**--------------------------------------------------------------------------------
* @description 인터벌 생성및 실행 클래스
*    원하는 함수를 사용자가 원하는 횟수만큼 호출한후 onIntervalEnd 를 발행시킴...
*
* @implement
*   Interval#onIntervalEnd
*
* @example
* &lt;code&gt;
*  _interval=new Interval();
 _interval.addEventListener(IntervalEvent.ON_INTERVAL_END,this);
 _interval.makeInterval(functionScope,functionReference,duration,loop,[parameter array]);
&nbsp;
 public function onIntervalEnd(evt:IntervalEvent):Void{
    // 인터벌 이후에 이벤트를 사용하려면 구현...
     parameter array 인자가 그대로 넘어온다...
&nbsp;
  }
* &lt;/code&gt;
*
*--------------------------------------------------------------------------------*/</span>
<span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">management</span>.<span style="color: #006600;">Interval</span> <span style="color: #0066CC;">extends</span> Dispatcher<span style="color: #66cc66;">&#123;</span>
 <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _IntervalID : <span style="color: #0066CC;">Number</span>;
 <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _count : <span style="color: #0066CC;">Number</span>;
&nbsp;
  <span style="color: #808080; font-style: italic;">/**------------------------------------------------------------------------------
     * Constructor function
   *------------------------------------------------------------------------------*/</span>
 <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Interval<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">//생성자 함수 필요없음....</span>
 <span style="color: #66cc66;">&#125;</span>
&nbsp;
 <span style="color: #808080; font-style: italic;">/**------------------------------------------------------------------------------
 * @description 전역속성인 setInterval 함수의 id 값 전부 제거
 *-------------------------------------------------------------------------------*/</span>
 <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> clearAllInterval<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">var</span> topId=<span style="color: #0066CC;">setInterval</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #66cc66;">&#125;</span>,<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i=<span style="color: #cc66cc;">0</span> ; i<span style="color: #66cc66;">&amp;</span>lt;=topId; i++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>    <span style="color: #0066CC;">clearInterval</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>;   <span style="color: #66cc66;">&#125;</span>  <span style="color: #66cc66;">&#125;</span>       
<span style="color: #808080; font-style: italic;">/**------------------------------------------------------------------------------    
 * @description interval 에의한 실행함수     
* @param loop : Number, 함수 실행할 횟수     
*@param referObj : Object, 인터벌에 등록한 함수 오브젝트    
 *-------------------------------------------------------------------------------*/</span>   
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> execute<span style="color: #66cc66;">&#40;</span>loop:<span style="color: #0066CC;">Number</span>,referObj:<span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>      <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>_count<span style="color: #66cc66;">&amp;</span>gt;loop<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
        <span style="color: #0066CC;">clearInterval</span><span style="color: #66cc66;">&#40;</span>_IntervalID<span style="color: #66cc66;">&#41;</span>;
       _count=<span style="color: #cc66cc;">1</span>;
     startEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> IntervalEvent<span style="color: #66cc66;">&#40;</span>IntervalEvent.<span style="color: #006600;">ON_INTERVAL_END</span>,referObj.<span style="color: #006600;">param</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//Dispatch  event</span>
     <span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>referObj<span style="color: #66cc66;">!</span>=<span style="color: #0066CC;">undefined</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
           referObj.<span style="color: #006600;">func</span>.<span style="color: #0066CC;">apply</span><span style="color: #66cc66;">&#40;</span>referObj.<span style="color: #006600;">obj</span>,referObj.<span style="color: #006600;">param</span><span style="color: #66cc66;">&#41;</span>;
         <span style="color: #66cc66;">&#125;</span>
         _count++;
      <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
 <span style="color: #808080; font-style: italic;">/**-----------------------------------------------------------------------------
 * @description  인터벌 생성
 * @param scope : Object, 실행할 함수의 스코프
 * @param func : Function, 실행할 함수
 * @param duration : Number, 인터벌 간격(밀리세컨드)
 * @param loop : Number, 함수 실행할 횟수
 *-------------------------------------------------------------------------------*/</span>
 <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> makeInterval<span style="color: #66cc66;">&#40;</span>scope:<span style="color: #0066CC;">Object</span>,func:<span style="color: #000000; font-weight: bold;">Function</span>,<span style="color: #0066CC;">duration</span>:<span style="color: #0066CC;">Number</span>,
                                            loop:<span style="color: #0066CC;">Number</span>,parameter:<span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
&nbsp;
   <span style="color: #0066CC;">clearInterval</span><span style="color: #66cc66;">&#40;</span>_IntervalID<span style="color: #66cc66;">&#41;</span>;
   _count=<span style="color: #cc66cc;">1</span>;
  _IntervalID=<span style="color: #0066CC;">setInterval</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>,<span style="color: #ff0000;">&quot;execute&quot;</span>,<span style="color: #0066CC;">duration</span>,loop,<span style="color: #66cc66;">&#123;</span>func:func,obj:scope,param:parameter<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
 <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>&lt;DispatcherClass&gt;</strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">events</span>.<span style="color: #006600;">EventDispatcher</span>;
<span style="color: #808080; font-style: italic;">/**
* @description     이벤트 디스패처 확장 클래스
*                        이벤트 발생할 클래스에 상속후 startEvent 함수 실행.....
*/</span>
<span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">Dispatcher</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> dispatchEvent:<span style="color: #000000; font-weight: bold;">Function</span>;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> addEventListener:<span style="color: #000000; font-weight: bold;">Function</span>;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> removeEventListener:<span style="color: #000000; font-weight: bold;">Function</span>;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Dispatcher<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
EventDispatcher.<span style="color: #006600;">initialize</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> startEvent<span style="color: #66cc66;">&#40;</span>obj : <span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
dispatchEvent<span style="color: #66cc66;">&#40;</span>obj<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>자주사용하는 인터벌을 쓰기 편하게 클래스로 만들었다.  원하는 함수를 원하는 횟수만큼 호출한후 자동으로 인터벌이 삭제된다. 함수 호출시 파라미터도 같이 호출할 수도 있고 인터벌이후에 발생하는 이벤트도 실행할 수도 있게 구성했다.</p>
<p><strong><span style="color: #000000; ">&lt;example code&gt;<br />
</span></strong> test 함수를 문자열 2개 인자와 함께 200 millisecond 간격으로 5번 호출한다.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">_interval=<span style="color: #000000; font-weight: bold;">new</span> Interval<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
_interval.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>IntervalEvent.<span style="color: #006600;">ON_INTERVAL_END</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>; --<span style="color: #66cc66;">&gt;</span> 인터벌이후에 발생하는이 벤트를 받기위해서 리스너를 붙인다. 받을 이벤트가 없다면 필요없다.
_interval.<span style="color: #006600;">makeInterval</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>,test,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;test string1......&quot;</span>,<span style="color: #ff0000;">&quot;test string2......&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> test<span style="color: #66cc66;">&#40;</span>str:<span style="color: #0066CC;">String</span>,str2:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>str<span style="color: #66cc66;">&#41;</span>;
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>str2<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> onIntervalEnd<span style="color: #66cc66;">&#40;</span>evt:IntervalEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">// 인터벌 이후에 이벤트를 사용하려면 구현...</span>
<span style="color: #808080; font-style: italic;">// evt 값은 makeInterval 에서 test 함수를 호출할때 같이 쓰인 문자열 인자값이 배열로 그대로 들어온다.</span>
<span style="color: #808080; font-style: italic;">// evt.target[0] -----&gt; test string1...... evt.target[1] -----&gt; test string2......</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://kimkijeung.com/2007/01/28/custom-interval-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to implement User RectBorder</title>
		<link>http://kimkijeung.com/2007/01/21/how-to-implement-user-rectborder/</link>
		<comments>http://kimkijeung.com/2007/01/21/how-to-implement-user-rectborder/#comments</comments>
		<pubDate>Sat, 20 Jan 2007 20:14:34 +0000</pubDate>
		<dc:creator>vkimone</dc:creator>
				<category><![CDATA[Flash-AS2.0]]></category>
		<category><![CDATA[Flash-Tip]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[border style]]></category>
		<category><![CDATA[component]]></category>

		<guid isPermaLink="false">http://vkimone.inblog.kr/?p=382</guid>
		<description><![CDATA[플래시에서 제공되는 component 들은 종류에 비해 디자인적인 확장성에서 제약이 있기 때문에 많이 사용되지 않고 있다. 물론 나도 특별한 경우를 제외하고는 사용하지 않는 편이다. 나름대로 디자인에 큰 영향이 없다면 제공되는 기본 component 를 사용하지만 간혹가다 뜻하지 않는 문제점에 부딛히게 되면 여간 힘든게 아니다. 많이 사용해 보지 않는 문제점을 해결하는 것이 만만치 않다. 특히 기본 component 를 [...]]]></description>
			<content:encoded><![CDATA[<p>플래시에서 제공되는 component 들은 종류에 비해 디자인적인 확장성에서 제약이 있기 때문에 많이 사용되지 않고 있다. 물론 나도 특별한 경우를 제외하고는 사용하지 않는 편이다.<br />
나름대로 디자인에 큰 영향이 없다면 제공되는 기본 component 를 사용하지만 간혹가다 뜻하지 않는 문제점에 부딛히게 되면 여간 힘든게 아니다. 많이 사용해 보지 않는 문제점을 해결하는 것이 만만치 않다. 특히 기본 component 를 사용할때 가장 문제가 되는것이 바로 border 처리 문제일것이다.<br />
halo theme 에서 제공되는 border를 쓰자니 디자인에 걸릴때가 참 많이 발생하게 된다.<br />
물론 theme 파일을 수정하여 요소들을 수정할 수 있지만 여간 손이 많이 가는게 아닐 뿐더러 자칫하면 내장 클래스를 건드리게 되어 플래시 전체의 component 의 UI 가 뜻하지 않게 될수도 있다.</p>
<p>이런 저런 문제로 그동안 사용을 극도로 꺼려했지만 이번에 러퍼런스를 보고 가장 손쉽게 border 를 사용자가 맞게 구성하는 방법을 찾아내어 소개해 본다.</p>
<p>기본적인 방법은 내장 component 에서 사용하는  RectBorder 을 편집하여 사용자가 만든 border 를 사용할 수 있게 하는 것이다.</p>
<p>1. 플래시가 설치되어 있는 폴더에서 Class/mx/skins 폴더에 사용자 정의 테두리에 사용할 사용자 정의 패키지 이름으로 새 폴더를 만든다.<br />
ex: C:\Program Files\Macromedia\Flash 8\en\First Run\Classes\mx\skins<br />
2. 이폴더에 RectBorder.as 이름으로 사용자 정의 클래스를 만든다.<br />
3.다음 코드를 삽입한다.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">core</span>.<span style="color: #006600;">ext</span>.<span style="color: #006600;">UIObjectExtensions</span>;
<span style="color: #000000; font-weight: bold;">class</span> mx.<span style="color: #006600;">skins</span>.<span style="color: #006600;">myTheme</span>.<span style="color: #006600;">RectBorder</span> <span style="color: #0066CC;">extends</span> mx.<span style="color: #006600;">skins</span>.<span style="color: #006600;">RectBorder</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> symbolName:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;RectBorder&quot;</span>;
<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> symbolOwner:<span style="color: #0066CC;">Object</span> = RectBorder;
<span style="color: #000000; font-weight: bold;">var</span> className:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;RectBorder&quot;</span>;
<span style="color: #808080; font-style: italic;">#include &quot;../../core/ComponentVersion.as&quot;</span>
<span style="color: #808080; font-style: italic;">// All of these borders have the same size edges, 1 pixel.</span>
<span style="color: #000000; font-weight: bold;">var</span> offset:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">4</span>;
<span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">super</span>.<span style="color: #006600;">init</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> drawBorder<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">// The graphics are on the symbol's timeline,</span>
<span style="color: #808080; font-style: italic;">// so all you need to do here is size the border.</span>
<span style="color: #0066CC;">_width</span> = __width;
<span style="color: #0066CC;">_height</span> = __height;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">// Register the class as the RectBorder for all components to use.</span>
<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> classConstruct<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Boolean</span> <span style="color: #66cc66;">&#123;</span>
UIObjectExtensions.<span style="color: #006600;">Extensions</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">_global</span>.<span style="color: #006600;">styles</span>.<span style="color: #006600;">rectBorderClass</span> = RectBorder;
<span style="color: #000000; font-weight: bold;">_global</span>.<span style="color: #006600;">skinRegistry</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;RectBorder&quot;</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #000000; font-weight: bold;">true</span>;
<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">true</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> classConstructed:<span style="color: #0066CC;">Boolean</span> = classConstruct<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> UIObjectExtensionsDependency = UIObjectExtensions;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>위코드는 사용자 정의 Symbol 을 사용하여 사용자가 정의한  RectBorder을 사용하여 border를 설정하는 것이다.</p>
<p>4. 새로운 Symbol 을 생성한 후  linkage property 에서 아래와 같이 설정한다.<br />
<strong>Identifier</strong> :  RectBorder<br />
<strong>As 2.0 Class</strong> : mx.skins.myTheme.RectBorder</p>
<p>5. 조금전에 생성한 RectBorder symbol 을 편집해 원하는 border 를 그린다.<br />
단지 좌표값을 0,0 에 맞추어 속이 빈 사각형 박스를 그리기만 하면 된다.</p>
<p>6. RectBorder를 사용하는 여러 component 요소를 스테이지로 드래그합니다.<br />
예를 들어 List, TextArea 및 TextInput component<br />
7. export movie 를 통해 확인해 보면 자신이 만든 border 사용하여 그려진 것을 볼 수 있다.</p>
<p>이런 방법을 사용하면 전체적으로  borderStyle 에 영향받지 않고 자신이 원하는 border 를 구성할 수 있을 것이다.</p>
]]></content:encoded>
			<wfw:commentRss>http://kimkijeung.com/2007/01/21/how-to-implement-user-rectborder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to sort Objects(Class)</title>
		<link>http://kimkijeung.com/2007/01/10/how-to-sort-objectsclass/</link>
		<comments>http://kimkijeung.com/2007/01/10/how-to-sort-objectsclass/#comments</comments>
		<pubDate>Tue, 09 Jan 2007 15:01:16 +0000</pubDate>
		<dc:creator>vkimone</dc:creator>
				<category><![CDATA[Flash-AS2.0]]></category>
		<category><![CDATA[Flash-Tip]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[sort]]></category>

		<guid isPermaLink="false">http://vkimone.inblog.kr/?p=380</guid>
		<description><![CDATA[sortOn (Array.sortOn method) public sortOn(fieldName:Object, [options:Object]) : Array Sorts the elements in an array according to one or more fields in the array. The array should have the following characteristics: The array is an indexed array, not an associative array. Each element of the array holds an object with one or more properties. All of [...]]]></description>
			<content:encoded><![CDATA[<div class="signature">
<p><strong><span style="color: #ff0000;">sortOn</span> (Array.sortOn method)<br />
</strong><br />
<span style="color: #0000ff;">public</span> <span style="color: #ff0000;">sortOn</span>(fieldName:Object, [options:<span style="color: #ff0000;">Object</span>]) : <span style="color: #ff0000;">Array</span></div>
<p>Sorts the elements in an array according to one or more fields in the array. The array should have the following characteristics:</p>
<li>The array is an indexed array, not an associative array.</li>
<li><span style="color: #0000ff;">Each element of the array holds an object with one or more properties.</span><span style="color: #ff0000;"> </span></li>
<li>All of the objects have at least one property in common, the values of which can be used to sort the array. Such a property is called a <em>field</em>.If you pass multiple <code>fieldName</code> parameters, the first field represents the primary sort field, the second represents the next sort field, and so on. Flash sorts according to Unicode values. (ASCII is a subset of Unicode.) If either of the elements being compared does not contain the field that is specified in the <code>fieldName</code> parameter, the field is assumed to be <code>undefined</code>, and the elements are placed consecutively in the sorted array in no particular order.오브젝트를 일반적인 단일속성이 아닌 한개 이상의 여러 속성을 기준으로 정렬할시 사용되는 메서드이다. 오브젝트를 정렬할때 종종 사용하던 방법이였는데 이번 프로젝트를 진행하면서 클래스 자체를 정렬할때 사용해 보았는데 제대로 작동하였다.
<p>클래스는 당연히 오브젝트의 일종이다. 따라서 클래스 안에 있는 멤버 변수들을 기준으로 정렬이 가능하다는 의미다. 자신이 클래스를 사용하여 이미지 갤러리같은 정렬의 기능이 있는 컨텐츠를 제작할시에 아주 유용한 기능일 것이다.</p>
<p><strong>// widget class : 정렬에 사용될 클래스</strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">project</span>.<span style="color: #006600;">ces2007</span>.<span style="color: #006600;">widget</span>.<span style="color: #006600;">Widget</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> _id:<span style="color: #0066CC;">String</span>;
  <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> _title:<span style="color: #0066CC;">String</span>;
  <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> _date:<span style="color: #0066CC;">Number</span>;
  <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Widget<span style="color: #66cc66;">&#40;</span>id:<span style="color: #0066CC;">String</span>,title:<span style="color: #0066CC;">String</span>,<span style="color: #0066CC;">date</span>:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  _id=id;
  _title=title;
  _date=<span style="color: #0066CC;">date</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">// example code</span>
&nbsp;
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">project</span>.<span style="color: #006600;">ces2007</span>.<span style="color: #006600;">widget</span>.<span style="color: #006600;">Widget</span> ;
<span style="color: #000000; font-weight: bold;">var</span> widgetArr:<span style="color: #0066CC;">Array</span>=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> widget1:Widget=<span style="color: #000000; font-weight: bold;">new</span> Widget<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;vkimone&quot;</span>,<span style="color: #ff0000;">&quot;widget1&quot;</span>,<span style="color: #cc66cc;">20061213</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> widget2:Widget=<span style="color: #000000; font-weight: bold;">new</span> Widget<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;kimkijeung&quot;</span>,<span style="color: #ff0000;">&quot;widget2&quot;</span>,<span style="color: #cc66cc;">20061110</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> widget3:Widget=<span style="color: #000000; font-weight: bold;">new</span> Widget<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Tom&quot;</span>,<span style="color: #ff0000;">&quot;widget3&quot;</span>,<span style="color: #cc66cc;">20061115</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> widget4:Widget=<span style="color: #000000; font-weight: bold;">new</span> Widget<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Jane&quot;</span>,<span style="color: #ff0000;">&quot;widget4&quot;</span>,<span style="color: #cc66cc;">20061211</span><span style="color: #66cc66;">&#41;</span>;
widgetArr.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>widget1<span style="color: #66cc66;">&#41;</span>;
widgetArr.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>widget2<span style="color: #66cc66;">&#41;</span>;
widgetArr.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>widget3<span style="color: #66cc66;">&#41;</span>;
widgetArr.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>widget4<span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i=<span style="color: #cc66cc;">0</span>; i<span style="color: #66cc66;">&lt;</span>widgetArr.<span style="color: #0066CC;">length</span> ; i++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>i+<span style="color: #ff0000;">&quot;  : &quot;</span>+widgetArr<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>._id+<span style="color: #ff0000;">&quot; : &quot;</span>+widgetArr<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>._title+<span style="color: #ff0000;">&quot;  -----------&gt;&quot;</span>+widgetArr<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>._date<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;======================================&quot;</span><span style="color: #66cc66;">&#41;</span>;
widgetArr.<span style="color: #0066CC;">sortOn</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_date&quot;</span>,<span style="color: #0066CC;">Array</span>.<span style="color: #006600;">NUMERIC</span><span style="color: #66cc66;">|</span> <span style="color: #0066CC;">Array</span>.<span style="color: #006600;">DESCENDING</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i=<span style="color: #cc66cc;">0</span>; i<span style="color: #66cc66;">&lt;</span>widgetArr.<span style="color: #0066CC;">length</span> ; i++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>i+<span style="color: #ff0000;">&quot;  : &quot;</span>+widgetArr<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>._id+<span style="color: #ff0000;">&quot; : &quot;</span>+widgetArr<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>._title+<span style="color: #ff0000;">&quot;  -----------&gt;&quot;</span>+widgetArr<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>._date<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>//result</strong><br />
0  : vkimone : widget1  &#8212;&#8212;&#8212;&#8211;&gt;20061213<br />
1  : kimkijeung : widget2  &#8212;&#8212;&#8212;&#8211;&gt;20061110<br />
2  : Tom : widget3  &#8212;&#8212;&#8212;&#8211;&gt;20061115<br />
3  : Jane : widget4  &#8212;&#8212;&#8212;&#8211;&gt;20061211<br />
======================================<br />
0  : vkimone : widget1  &#8212;&#8212;&#8212;&#8211;&gt;20061213<br />
1  : Jane : widget4  &#8212;&#8212;&#8212;&#8211;&gt;20061211<br />
2  : Tom : widget3  &#8212;&#8212;&#8212;&#8211;&gt;20061115<br />
3  : kimkijeung : widget2  &#8212;&#8212;&#8212;&#8211;&gt;20061110</p>
<p>각각의 아이디값과 제목 그리고 날짜 정보를 포함하는 widget 클래스에서 여러개의 객체를 생성한후<br />
배열에 넣은 다음 오브젝트 속성인 _date 를 기준으로 내림차순으로 숫자 정렬했을때의 결과값이다.<br />
각 클래스 속성을 기준으로 통채로 정렬이 된다.</p>
<p>만역 클래스를 이용해 철저히 오브젝트들을 캡슐화(encapsulation)했다면 손쉽게 오브젝트 정렬을 사용할 수 있을 것이다.</li>
]]></content:encoded>
			<wfw:commentRss>http://kimkijeung.com/2007/01/10/how-to-sort-objectsclass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tween Engine</title>
		<link>http://kimkijeung.com/2006/12/04/tween-engine/</link>
		<comments>http://kimkijeung.com/2006/12/04/tween-engine/#comments</comments>
		<pubDate>Mon, 04 Dec 2006 11:30:35 +0000</pubDate>
		<dc:creator>vkimone</dc:creator>
				<category><![CDATA[Flash-AS2.0]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[TweenEngine]]></category>

		<guid isPermaLink="false">http://vkimone.inblog.kr/?p=366</guid>
		<description><![CDATA[기존에 동시에 2개의 속성을 트윈시킬 수 있었던 것에서 트원 속성 갯수에 관계없이 가능하도록 수정하였다.  이 클래스 하나로 무비클립 속성 트윈은 대부분 가능하다. 마지막 파라미터를 이용해 콜백함수를 호출할수 있다. 이징 함수 자체도 조절 가능하게 해보았지만 효율성 측면에서 생략했다. 어쩌면 이정도 길이에 가장 많은 기능을 제공하고 범용적으로 사용될수 있는 트윈클래스가 없지 않을듯 싶다&#8230;^^ /** * @description * [...]]]></description>
			<content:encoded><![CDATA[<p>기존에 동시에 2개의 속성을 트윈시킬 수 있었던 것에서 트원 속성 갯수에 관계없이</p>
<p>가능하도록 수정하였다.  이 클래스 하나로 무비클립 속성 트윈은 대부분 가능하다.<br />
마지막 파라미터를 이용해 콜백함수를 호출할수 있다. 이징 함수 자체도 조절 가능하게<br />
해보았지만 효율성 측면에서 생략했다.<br />
어쩌면 이정도 길이에 가장 많은 기능을 제공하고 범용적으로 사용될수 있는 트윈클래스가 없지 않을듯 싶다&#8230;^^</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**
* @description
* 무비클립 속성  트윈 클래스 : 이징함수 설정으로 조절 
* 트원할 속성의 갯수에 관계없이 오브젝트로 적용 가능
* 
* 트윈이 끝났을 때 실행할 함수 및 파라미터 설정 방법
* 다른 클래스에서 직접 참조해서 호출 가능....
* @param referObj : reference object(caution--&gt; 파라미터값 반드시 배열요소로 입력)
* @example
*     &lt;code&gt;
*        PropertyTweenEase.tween(targetMc,{_x:200,_y:100},Elastic.easeOut,30,{{func: 실행할 함수
이름 , obj: 참조오브젝트, param: [파라미터 배열로 들어감]}}
*     &lt;/code&gt;
*/</span>
<span style="color: #000000; font-weight: bold;">class</span> com.<span style="color: #006600;">dstrict</span>.<span style="color: #006600;">UB</span>.<span style="color: #006600;">util</span>.<span style="color: #006600;">transitions</span>.<span style="color: #006600;">tween</span>.<span style="color: #006600;">PropertyTweenEase</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">/**----------------------------------------------------------------------------------
* @param mc : MovieClip, 적용무비클립
* @param property : Object, 무비클립속성 오브젝트 ex. {_x:100,_y:200}
* @param func : Function, easing function
* @param durationFrame : Number, 지속프레임
*------------------------------------------------------------------------------------*/</span>
<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> tween<span style="color: #66cc66;">&#40;</span>mc:<span style="color: #0066CC;">MovieClip</span>,obj:<span style="color: #0066CC;">Object</span>,func:<span style="color: #000000; font-weight: bold;">Function</span>,durationFrame:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">time</span>:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">1</span>;
<span style="color: #000000; font-weight: bold;">var</span> beginning:<span style="color: #0066CC;">Array</span>=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> change:<span style="color: #0066CC;">Array</span>=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
  
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i <span style="color: #b1b100;">in</span> obj<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
  beginning.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>mc<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
     change.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>obj<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>-mc<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
     
<span style="color: #66cc66;">&#125;</span>
       <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">type</span>=<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">typeof</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>==<span style="color: #ff0000;">&quot;object&quot;</span><span style="color: #66cc66;">&#41;</span>? <span style="color: #000000; font-weight: bold;">true</span> : <span style="color: #000000; font-weight: bold;">false</span>;
       <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">type</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">var</span> referObj=<span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#93;</span>;
       <span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">var</span> p:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#93;</span>; 
        <span style="color: #000000; font-weight: bold;">var</span> referObj=<span style="color: #0066CC;">arguments</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#93;</span>;
       <span style="color: #66cc66;">&#125;</span>
  mc.<span style="color: #0066CC;">onEnterFrame</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">var</span> objIdx:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
  <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i <span style="color: #b1b100;">in</span> obj<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
   mc<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>=func<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">time</span>,beginning<span style="color: #66cc66;">&#91;</span>objIdx<span style="color: #66cc66;">&#93;</span>,change<span style="color: #66cc66;">&#91;</span>objIdx<span style="color: #66cc66;">&#93;</span>,durationFrame,p<span style="color: #66cc66;">&#41;</span>;
   objIdx++;
  <span style="color: #66cc66;">&#125;</span>
     <span style="color: #0066CC;">time</span>++;
  <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>time<span style="color: #66cc66;">&gt;</span>durationFrame<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
   <span style="color: #0066CC;">delete</span> <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">onEnterFrame</span>;
   <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>referObj<span style="color: #66cc66;">!</span>=<span style="color: #0066CC;">undefined</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
    referObj.<span style="color: #006600;">func</span>.<span style="color: #0066CC;">apply</span><span style="color: #66cc66;">&#40;</span>referObj.<span style="color: #006600;">obj</span>,referObj.<span style="color: #006600;">param</span><span style="color: #66cc66;">&#41;</span>;
   <span style="color: #66cc66;">&#125;</span>
   
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>&lt;사용방법&gt;</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">PropertyTweenEase.<span style="color: #006600;">tween</span><span style="color: #66cc66;">&#40;</span>mc,<span style="color: #66cc66;">&#123;</span><span style="color: #0066CC;">_x</span>:<span style="color: #cc66cc;">100</span>,<span style="color: #0066CC;">_y</span>:<span style="color: #cc66cc;">200</span>,<span style="color: #0066CC;">_alpha</span>:<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#125;</span>,Regular.<span style="color: #006600;">easeOut</span>,<span style="color: #cc66cc;">20</span>,
<span style="color: #66cc66;">&#123;</span>func:<span style="color: #0066CC;">this</span>.<span style="color: #006600;">onMotionFinished</span>,obj:<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> onMotionFinished<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;motion finished.......&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://kimkijeung.com/2006/12/04/tween-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
