<?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>세계의끝과 플래시 원더랜드 &#187; AS2.0 API</title>
	<atom:link href="http://ufx.kr/blog/category/flashpaltform/actionscript2/feed" rel="self" type="application/rss+xml" />
	<link>http://ufx.kr/blog</link>
	<description>Flash + ActionScript &#38; Design</description>
	<lastBuildDate>Fri, 27 Jan 2012 21:51:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>AS2.0 ExternalInterface.call() 로 html 에 embed 된 swf 의 크기 조절하기</title>
		<link>http://ufx.kr/blog/290</link>
		<comments>http://ufx.kr/blog/290#comments</comments>
		<pubDate>Fri, 10 Jul 2009 04:10:52 +0000</pubDate>
		<dc:creator>세계의끝</dc:creator>
				<category><![CDATA[AS2.0 API]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[call]]></category>
		<category><![CDATA[div]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[ExternalInterface]]></category>
		<category><![CDATA[height]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[RESIZE]]></category>
		<category><![CDATA[stage]]></category>
		<category><![CDATA[StageAlign]]></category>
		<category><![CDATA[StageScaleMode]]></category>
		<category><![CDATA[width]]></category>
		<category><![CDATA[스테이지]]></category>
		<category><![CDATA[크기조절]]></category>

		<guid isPermaLink="false">http://ufx.kr/blog/?p=290</guid>
		<description><![CDATA[ExternalInterface 를 이용하여 플래시 내부에서 필요한 크기의 swf 를 계산하고 html 의 자바스크립트를 호출하여 swf 를 감싸고 있는 div 의 크기를 조절하는 내용입니다. swf 이 html 에 앉혀지게 되는 object 태그와 embed 태그에는 width와 height를 모두 100%로 설정되어있고, swf 의 외부를 감싸고 있는 div 의 크기가 지정되어 있으므로, 로드된 직후 swf 는 div 와 동일한 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ufx.kr/blog/wp-content/uploads/2009/07/img.png" alt="loupe" title="loupe" width="128" height="128" class="alignleft size-full wp-image-291" />ExternalInterface 를 이용하여 플래시 내부에서 필요한 크기의 swf 를 계산하고 html 의 자바스크립트를 호출하여 swf 를 감싸고 있는 div 의 크기를 조절하는 내용입니다.</p>
<p>swf 이 html 에 앉혀지게 되는 object 태그와 embed 태그에는 width와 height를 모두 100%로 설정되어있고, swf 의 외부를 감싸고 있는 div 의 크기가 지정되어 있으므로, 로드된 직후 swf 는 div 와 동일한 크기로 보여집니다.</p>
<p><a href="http://ufx.kr/blog/273">AS3.0 버전으로는 같은 제목의 포스트</a>를 얼마전에 작성하였습니다. 생각해보면 이런 팁이 필요한 분들은 비교적 가벼운 swf 를(네비게이션 바 또는 플래시 비주얼 무비 같은 것) html 에 사용하는 경우일터라 AS2.0 으로 코딩하는 경우가 압도적으로 많을테고, 3.0 문법에는 익숙하지 않은 쪽일거라 생각하여 이 포스트를 작성하게 되었습니다.</p>
<p><span id="more-290"></span><br />
fla 에 작성된 코드를 보시죠.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">external</span>.<span style="color: #006600;">ExternalInterface</span>;
&nbsp;
<span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">scaleMode</span> = <span style="color: #ff0000;">&quot;noScale&quot;</span>;
<span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">align</span> = <span style="color: #ff0000;">&quot;TL&quot;</span>;
&nbsp;
mc.<span style="color: #0066CC;">onPress</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: #0066CC;">this</span>.<span style="color: #0066CC;">startDrag</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0066CC;">Mouse</span>.<span style="color: #0066CC;">addListener</span><span style="color: #66cc66;">&#40;</span> mouseListener <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
mc.<span style="color: #0066CC;">onRelease</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: #0066CC;">this</span>.<span style="color: #0066CC;">stopDrag</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0066CC;">Mouse</span>.<span style="color: #0066CC;">removeListener</span><span style="color: #66cc66;">&#40;</span> mouseListener <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> mouseListener:<span style="color: #0066CC;">Object</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
mouseListener.<span style="color: #0066CC;">onMouseMove</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>
	resizeHtmlObject<span style="color: #66cc66;">&#40;</span> mc.<span style="color: #0066CC;">_x</span> + mc.<span style="color: #0066CC;">_width</span>, mc.<span style="color: #0066CC;">_y</span> + mc.<span style="color: #0066CC;">_height</span> <span style="color: #66cc66;">&#41;</span>;
	txtOutput<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> txtOutput<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
	txtWidth.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;Stage.width : &quot;</span> + <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">width</span>;
	txtHeight.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;Stage.height : &quot;</span> + <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">height</span>;
<span style="color: #66cc66;">&#125;</span>
txtOutput<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//html 에 있는 JavaScript 를 호출</span>
<span style="color: #000000; font-weight: bold;">function</span> resizeHtmlObject<span style="color: #66cc66;">&#40;</span> $width:<span style="color: #0066CC;">Number</span>, $height:<span style="color: #0066CC;">Number</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
	ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;resizeElement&quot;</span>, <span style="color: #ff0000;">&quot;swfDiv&quot;</span>, <span style="color: #ff0000;">&quot;width&quot;</span>, $width <span style="color: #66cc66;">&#41;</span>;
	ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;resizeElement&quot;</span>, <span style="color: #ff0000;">&quot;swfDiv&quot;</span>, <span style="color: #ff0000;">&quot;height&quot;</span>, $height <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">//아래 내용은 resize ! 버튼에 대한 내용</span>
<span style="color: #000000; font-weight: bold;">var</span> px:<span style="color: #0066CC;">Number</span>;
<span style="color: #000000; font-weight: bold;">var</span> py:<span style="color: #0066CC;">Number</span>;
&nbsp;
resizeButton.<span style="color: #0066CC;">onRelease</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>
	px = <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">width</span>;
	py = <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">height</span>;
	moving<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">this</span>, px, <span style="color: #0066CC;">parseInt</span><span style="color: #66cc66;">&#40;</span> txtResizeX.<span style="color: #0066CC;">text</span>, <span style="color: #cc66cc;">10</span> <span style="color: #66cc66;">&#41;</span>, py, <span style="color: #0066CC;">parseInt</span><span style="color: #66cc66;">&#40;</span> txtResizeY.<span style="color: #0066CC;">text</span>, <span style="color: #cc66cc;">10</span> <span style="color: #66cc66;">&#41;</span>, <span style="color: #cc66cc;">0.2</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> moving<span style="color: #66cc66;">&#40;</span> $mc, $x, $targetX, $y, $targetY, $speed <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</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>
		$x += <span style="color: #66cc66;">&#40;</span> $targetX - $x <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> $speed;
		$y += <span style="color: #66cc66;">&#40;</span> $targetY - $y <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> $speed;
&nbsp;
		resizeHtmlObject<span style="color: #66cc66;">&#40;</span> $x, $y <span style="color: #66cc66;">&#41;</span>;
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> $targetX == <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">round</span><span style="color: #66cc66;">&#40;</span> $x <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&amp;&amp;</span> $targetY == <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">round</span><span style="color: #66cc66;">&#40;</span> $y <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			$x = $targetX;
			$y = $targetY;
			<span style="color: #0066CC;">delete</span> <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">onEnterFrame</span>;
		<span style="color: #66cc66;">&#125;</span>
		txtOutput<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>무비클립을 리사이징 핸들과 같이 사용할 수도 있고, 코드 아랫부분처럼 width와 height값에 easing 애니메이션 을 거는 것도 가능합니다. 적용 가능한 방법으로 적당히 응용해서 사용하면 되겠습니다.</p>
<p>resizeWrappedDiv 메서드에서 ExternalInterface.call() 로 호출한 html 에 포함되어있는 자바스크립트도 살펴볼까요. 자바스크립트는 AS3.0 버전에서 사용된것과 동일합니다.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> resizeElement<span style="color: #009900;">&#40;</span> $id<span style="color: #339933;">,</span> $prop<span style="color: #339933;">,</span> $pixel <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> obj <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span> $id <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	obj.<span style="color: #660066;">style</span><span style="color: #009900;">&#91;</span>$prop<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> $pixel <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;px&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>id 값으로 요소를 찾아, 인자로 던진 픽셀 크기만큼 속성을 조절하는 자바스크립트 입니다. div 뿐만 아니라 img 나 table 과 같은 다른 html 요소에도 사용가능하도록 범용으로 만들어져 있습니다.</p>
<p>참고로, swf 의 object 의 id 를 통해 object 태그의 width와 height속성을 직접 조절할 수도 있습니다만, 자바스크립트의 getElementById() 메서드로는 embed 태그의 name 속성이 잡히질 않아, IE계열에서는 크기 조절이 되는데, FF, Chrome 에서는 먹통이 됩니다. 이것을 크로스 브라우징이 되도록 하려면 브라우저 종류를 체크하여 별도로 제어해야 할듯 합니다. (자바스크립트의 영역이므로 이런건 각자 알아서~)<br />
그리고 swf 을 직접 사이즈 조절하면 IE에서는 swf 가 floating 된것 처럼 html의 다른 요소들 위로 올라가 버립니다. IE에서는 ActiveX로 동작하게 되니 어쩌면 당연한 결과겠죠. 이것은 일반적으로 우리가 원하는 결과가 아니라고 생각 하지만, IE만 고려해도 되는 상황에 또 이런것을 필요로 하는 분들도 있을 수 있으므로 참고하시면 되겠습니다.</p>
<p>IE8.0, FF3.5, Chrome2.0 에서 모두 정상 동작하는것을 확인했습니다.</p>
<div id="attachment_264" class="wp-caption aligncenter" style="width: 70px"><a href="http://ufx.kr/blog/wp-content/uploads/2009/07/resize_div_AS2.html" target="_blank"><img src="http://ufx.kr/blog/wp-content/uploads/2009/06/html_icon.gif" alt="결과 확인 (새 창)" title="html_icon" width="60" height="60" class="size-full wp-image-264" /></a><p class="wp-caption-text">결과 확인 (새 창)</p></div>
<blockquote><a href="http://ufx.kr/blog/wp-content/plugins/download-monitor/download.php?id=15" title="Downloaded 733 times"><img src="http://ufx.kr/blog/wp-content/uploads/2009/07/zip_icon.gif" />&nbsp; swf2div resize AS2.0 소스코드 다운로드</a> - fla, swf, html 포함 (fla 파일은 CS4에서 CS3 버전으로 저장, Flash 8 이하에서는 열리지 않습니다)</blockquote>
<p>* 연결된 글 : AS3.0 버전 <a href="http://ufx.kr/blog/273"><span style="color: #008080;">ExternalInterface.call() 로 html 에 embed 된 swf 의 크기 조절하기</span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ufx.kr/blog/290/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>다이나믹 텍스트필드에 일부분만 TextFormat 적용하기</title>
		<link>http://ufx.kr/blog/203</link>
		<comments>http://ufx.kr/blog/203#comments</comments>
		<pubDate>Sat, 30 May 2009 19:09:30 +0000</pubDate>
		<dc:creator>세계의끝</dc:creator>
				<category><![CDATA[AS2.0 API]]></category>
		<category><![CDATA[AS3.0 API]]></category>
		<category><![CDATA[Cookbook]]></category>
		<category><![CDATA[htmlText]]></category>
		<category><![CDATA[setTextFormat]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[TextField]]></category>
		<category><![CDATA[textFormat]]></category>
		<category><![CDATA[다이나믹 텍스트]]></category>
		<category><![CDATA[문자열]]></category>
		<category><![CDATA[텍스트포맷]]></category>
		<category><![CDATA[텍스트필드]]></category>

		<guid isPermaLink="false">http://ufx.kr/blog/?p=203</guid>
		<description><![CDATA[하나의 다이나믹 텍스트 필드에서 두개 이상의 포맷을 지정하고 싶은 경우 htmlText 설정하여 태그로 설정하는 방법 이외에 setTextFormat() 메서드를 이용하는 방법이 있습니다. htmlText 에서 지원하지 않는 속성으로 표현되어야 하거나, htmlText 속성을 줄 수 없는 경우에 이 방법을 사용하면 됩니다. 기본적으로 htmlText 보다는 TextFormat 이 좀 더 강력하다고 할 수 있습니다. 0 1 2 3 4 5 [...]]]></description>
			<content:encoded><![CDATA[<p>하나의 다이나믹 텍스트 필드에서 두개 이상의 포맷을 지정하고 싶은 경우 htmlText 설정하여 태그로 설정하는 방법 이외에 setTextFormat() 메서드를 이용하는 방법이 있습니다.</p>
<p>htmlText 에서 지원하지 않는 속성으로 표현되어야 하거나, htmlText 속성을 줄 수 없는 경우에 이 방법을 사용하면 됩니다. 기본적으로 htmlText 보다는 TextFormat 이 좀 더 강력하다고 할 수 있습니다.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> _tf<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">TextField</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">TextField</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
_tf.<span style="color: #004993;">text</span> = <span style="color: #990000;">&quot;세계의끝과 플래시 원더랜드&quot;</span>;
_tf.<span style="color: #004993;">autoSize</span> = <span style="color: #990000;">&quot;left&quot;</span>;
<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>_tf<span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #6699cc; font-weight: bold;">var</span> format<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">TextFormat</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">TextFormat</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
format.<span style="color: #004993;">color</span> = 0xff0000;
format.<span style="color: #004993;">bold</span> = <span style="color: #0033ff; font-weight: bold;">true</span>;
_tf.<span style="color: #004993;">setTextFormat</span><span style="color: #000000;">&#40;</span> format, <span style="color: #000000; font-weight:bold;">6</span>, <span style="color: #000000; font-weight:bold;">9</span> <span style="color: #000000;">&#41;</span>;</pre></td></tr></table></div>

<p>컴파일한 결과는 아래와 같습니다.<span id="more-203"></span></p>
<blockquote style="background:#ffffff"><p><span style="color: #000000;">세계의끝과 <strong><span style="color: #ff0000;">플래시</span></strong> 원더랜드</span></p></blockquote>
<p> </p>
<p>그런데 TextFormat 을 사용할 때 몇가지 주의할 점이 있습니다.</p>
<ol>
<li>텍스트필드에 스타일 시트(css) 가 적용된 경우 setTextFormat() 메서드는 무시됩니다.</li>
<li>endIndex 부분의 숫자에 주의해야 합니다.<br />
F1 레퍼런스에 있는 메서드 정의가 아래와 같은데요.<br />
public function setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void<br />
여기서 endIndex 는 TextFormat 이 끝나는 index 가 아니라 끝나고 난 후 다음 TextFormat 이 오는 index 입니다.<br />
&#8220;세계의끝과 플래시 원더랜드&#8221; 일 경우 &#8220;세&#8221;의 index 가 0 이고 띄어쓰기 공백 문자 포함해서 &#8220;플&#8221; 의 index 는 6입니다. 그러면 &#8220;시&#8221; 문자의 index 가 8 이 되는데요. _tf.setTextFormat( format, 6, 8 ); 으로 하면 우리가 원하는 결과가 아니라는 것 입니다. 즉, TextFormat 이 끝나고 난 후의 그 다음 index 인 9를 입력해야 합니다.</li>
<li>AS2.0에서도 사용할 수가 있습니다.<br />
그런데 AS2.0에서 사용할 경우 setTextFormat() 메서드 정의에서 파라미터의 순서가 다릅니다.<br />
public setTextFormat([beginIndex:Number], [endIndex:Number], textFormat:TextFormat) : Void<br />
어이없게도 TextFormat 객체가 들어가야 할 위치가 첫번째가 아니라 마지막입니다.<sup>[<a href="http://ufx.kr/blog/203#footnote_0_203" id="identifier_0_203" class="footnote-link footnote-identifier-link" title="ActionScript 3.0 Cookbook 의 한글판 해당 내용이 있는 338~339페이지에는 3.0 서적인데도 묘하게 2.0 코드로 예제가 설명되어 있네요.">01</a>]</sup></li>
</ol>
<ol class="footnotes"><li id="footnote_0_203" class="footnote">ActionScript 3.0 Cookbook 의 한글판 해당 내용이 있는 338~339페이지에는 3.0 서적인데도 묘하게 2.0 코드로 예제가 설명되어 있네요.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://ufx.kr/blog/203/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>속성까지 보내서 onEnterFrame 애니메이션</title>
		<link>http://ufx.kr/blog/105</link>
		<comments>http://ufx.kr/blog/105#comments</comments>
		<pubDate>Mon, 04 May 2009 11:34:40 +0000</pubDate>
		<dc:creator>세계의끝</dc:creator>
				<category><![CDATA[AS2.0 API]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[ease]]></category>
		<category><![CDATA[ease out]]></category>
		<category><![CDATA[easing]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[onEnterFrame]]></category>
		<category><![CDATA[감속]]></category>
		<category><![CDATA[속성]]></category>

		<guid isPermaLink="false">http://ufx.kr/blog/105</guid>
		<description><![CDATA[ AS2.0 환경에서 작업하는 사람들은 네비게이션을 수정해 본 정도의 스킬을 가지고 있는 디자이너인 경우가 대부분 입니다. 이 경우  구글 트위너나  TweenLite AS2.0 같이 외부 클래스를 사용하는 것은 그다지 고려의 대상이 아닌 경우가 많죠. 그래서 AS2.0 수준에서는 프레임 액션에 모든 코드를 넣고 플래시 애플리케이션을 만들게 됩니다. 애니메이션을 위한 코드 또한 예외 없이 다른 모든 코드들과 같이 프레임에 작성되어 구현하게 되죠. 아래와 같은 형태로 [...]]]></description>
			<content:encoded><![CDATA[<p> AS2.0 환경에서 작업하는 사람들은 네비게이션을 수정해 본 정도의 스킬을 가지고 있는 디자이너인 경우가 대부분 입니다. 이 경우  <a href="http://code.google.com/p/tweener/" target="_blank">구글 트위너</a>나  <a href="http://blog.greensock.com/tweenmaxas2/" target="_blank">TweenLite AS2.0</a> 같이 외부 클래스를 사용하는 것은 그다지 고려의 대상이 아닌 경우가 많죠.</p>
<p>그래서 AS2.0 수준에서는 프레임 액션에 모든 코드를 넣고 플래시 애플리케이션을 만들게 됩니다. 애니메이션을 위한 코드 또한 예외 없이 다른 모든 코드들과 같이 프레임에 작성되어 구현하게 되죠. 아래와 같은 형태로 말입니다. </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//스테이지에는 각각 mc와 btn 무비클립이 놓여져 있음</span>
<span style="color: #000000; font-weight: bold;">function</span> moving<span style="color: #66cc66;">&#40;</span> $mc, $pos, $speed <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</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: #0066CC;">this</span>.<span style="color: #0066CC;">_x</span> += <span style="color: #66cc66;">&#40;</span> $pos - <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">_x</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> $speed;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">button</span>.<span style="color: #0066CC;">onRelease</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>
	moving<span style="color: #66cc66;">&#40;</span> mc, <span style="color: #cc66cc;">300</span>, <span style="color: #cc66cc;">0.2</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>나름대로 굉장히 간결한 형태입니다. 움직이는 요소들이 많지 않거나, 제한된 범위 내에서 사용하기에는 무리가 없어보입니다.</p>
<p>그런데 _x 좌표말고 _y 좌표라던가, 아니면 _alpha 라던가, _xscale, _height 같이 다른 속성의 애니메이션이 되어야 한다면, 해당하는 속성별로 함수를 종류별로 만들어야 됩니다.</p>
<p>이런경우 변화되어야하는 속성까지 같이 인자로 넘겨버린다면 이야기가 달라지겠죠. 변경하고 싶은 속성은 문자열 형태의 인자로 보내고 함수내부에서는 [] 연산자로 처리해버리면 됩니다.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> moving<span style="color: #66cc66;">&#40;</span> $mc, $var, $pos, $speed <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</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: #0066CC;">this</span><span style="color: #66cc66;">&#91;</span>$var<span style="color: #66cc66;">&#93;</span> += <span style="color: #66cc66;">&#40;</span> $pos - <span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#91;</span>$var<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> $speed;
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> $pos == <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">round</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#91;</span>$var<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#91;</span>$var<span style="color: #66cc66;">&#93;</span> = $pos;
			<span style="color: #0066CC;">delete</span> <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">onEnterFrame</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">button</span>.<span style="color: #0066CC;">onRelease</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>
	moving<span style="color: #66cc66;">&#40;</span> mc, <span style="color: #ff0000;">&quot;_x&quot;</span>, <span style="color: #cc66cc;">300</span>, <span style="color: #cc66cc;">0.2</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>위의 코드를 보면 마지막으로 남아있던 무비클립 속성인 this._x 부분이 this[$var] 로 변경되어 모든 속성과 수치들이 함수의 인자로 빠져나왔습니다. (보너스로, 목표하는 지점에 속성이 거의 근접해서 소숫점 이하 반올림한 좌표와 같은 경우 무비클립을 목표 위치로 옮기고 엔터프레임을 죽여서 퍼포먼스를 확보하는 if 문을 추가하였습니다.)</p>
<p>속성을 선택하면서 해당속성을 변경하는 이런 방식은 AS3.0에서는 어찌보면 당연한 것인데 AS2.0 에서는 속성에 언더바( _x, _alpha &#8230; )가 붙어서 뭔가 접근할 수 없는것처럼 느껴져 위와 같은 생각을 쉽게 하지 못하는 경향이 있는것 같습니다.</p>
<p>액션스크립트에서는 this["문자열"] 형태의 참조가 가능합니다. ( _root["문자열"], _parent["문자열"], myMc["문자열"] 모두 가능 )<br />
뒤에 계속 참조하려면 this["문자열"].myMc.yourMc._x 와 같이 점찍고 이어가기도 가능합니다.<br />
문자열 부분에는 위와 같이 속성이나 변수도 올수도 있고, 내부에 있는 다른 무비클립도 가능하고, 함수도 가능하고, 뭐, 안되는게 없습니다.<br />
다른 언어 하시는 분들은 이런 형태의 참조를 보고서는 &#8220;와, 이런게 가능하네. 무진장 편하겠네요&#8221; 하더군요.<br />
양날의 검이긴 하지만 말이죠.</p>
<p>코드만 있고 그림이 없으면 뭔가 섭섭하기 때문에 간단하게 아래와 같이 만들어보았습니다.</p>
<p> <object width="600" height="300" data="http://ufx.kr/blog/wp-content/uploads/2009/04/onenterframeexample.swf" type="application/x-shockwave-flash"><param name="quality" value="high" /><param name="src" value="http://ufx.kr/blog/wp-content/uploads/2009/04/onenterframeexample.swf" /></object></p>
<p><a href="http://ufx.kr/blog/wp-content/uploads/2009/05/onenterframeexample.zip"><img class="size-thumbnail wp-image-133 alignleft" title="fl_icon" src="http://ufx.kr/blog/wp-content/uploads/2009/05/fl_icon-150x150.png" alt="fl_icon" width="50" height="50" /></a></p>
<div class="mceTemp"> </div>
<div class="mceTemp"><a href="http://ufx.kr/blog/wp-content/uploads/2009/05/onenterframeexample.zip">onEnterFrame Example (FLA)</a></div>
<div class="mceTemp"> </div>
<div class="mceTemp"> </div>
<div class="mceTemp"> </div>
<div class="mceTemp"> </div>
<div class="mceTemp"> </div>
<div class="mceTemp"> </div>
]]></content:encoded>
			<wfw:commentRss>http://ufx.kr/blog/105/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>onResize 이벤트 리스너를 이용한 풀플래시 무비클립 제어</title>
		<link>http://ufx.kr/blog/62</link>
		<comments>http://ufx.kr/blog/62#comments</comments>
		<pubDate>Sun, 14 Dec 2008 08:38:24 +0000</pubDate>
		<dc:creator>세계의끝</dc:creator>
				<category><![CDATA[AS2.0 API]]></category>
		<category><![CDATA[addListener]]></category>
		<category><![CDATA[align]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[doctype]]></category>
		<category><![CDATA[fullscreen]]></category>
		<category><![CDATA[onResize]]></category>
		<category><![CDATA[scaleMode]]></category>
		<category><![CDATA[stage]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[스테이지]]></category>
		<category><![CDATA[통플래시]]></category>
		<category><![CDATA[풀플래시]]></category>
		<category><![CDATA[화면제어]]></category>

		<guid isPermaLink="false">http://ufx.kr/blog/?p=62</guid>
		<description><![CDATA[onResize 이벤트 리스너를 이용한 네귀퉁이 정렬과 중앙 정렬에 관한 간단한 예제 입니다. 이 글은 플생사모에 올라온 질문에 대한 답변글로 작성된 글입니다. http://cafe.naver.com/flashdev/34311 2008년 12월 14일에 처음 작성되었고, 2009년 4월 1일에 수정하였습니다. 2009년 4월 24일에 중앙 부분 크기 조절과, DOCTYPE 에 대한 설정을 포함하여 다시 업데이트 하였습니다. 이 fla 파일은 Flash CS4에서 CS3형식으로 저장했습니다. (Flash 8 [...]]]></description>
			<content:encoded><![CDATA[<p>onResize 이벤트 리스너를 이용한 네귀퉁이 정렬과 중앙 정렬에 관한 간단한 예제 입니다.<br />
이 글은 플생사모에 올라온 질문에 대한 답변글로 작성된 글입니다.<br />
<a href="http://cafe.naver.com/flashdev/34311">http://cafe.naver.com/flashdev/34311</a></p>
<p>2008년 12월 14일에 처음 작성되었고,<br />
2009년 4월 1일에 수정하였습니다.<br />
2009년 4월 24일에 중앙 부분 크기 조절과, DOCTYPE 에 대한 설정을 포함하여 다시 업데이트 하였습니다.</p>
<blockquote><a href="http://ufx.kr/blog/wp-content/plugins/download-monitor/download.php?id=10" title="Downloaded 1379 times"><img src="http://ufx.kr/blog/wp-content/uploads/2009/07/zip_icon.gif" />&nbsp; onResize_example.zip</a> - (fla, swf, html 파일 다운로드)</blockquote>
<p>이 fla 파일은 Flash CS4에서 CS3형식으로 저장했습니다. (Flash 8 이하의 버전에서는 열리지 않습니다)</p>
<p><strong>onResize_example.fla 의 내용입니다.</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">scaleMode</span> = <span style="color: #ff0000;">&quot;noScale&quot;</span>;
<span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">align</span> = <span style="color: #ff0000;">&quot;TL&quot;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> resetStage<span style="color: #66cc66;">&#40;</span><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;Stage size is now &quot;</span> + <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">width</span> + <span style="color: #ff0000;">&quot; by &quot;</span> + <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">height</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	tl_mc.<span style="color: #0066CC;">_x</span> = <span style="color: #cc66cc;">0</span>;
	tl_mc.<span style="color: #0066CC;">_y</span> = <span style="color: #cc66cc;">0</span>;
&nbsp;
	tr_mc.<span style="color: #0066CC;">_x</span> = <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">width</span>;
	tr_mc.<span style="color: #0066CC;">_y</span> = <span style="color: #cc66cc;">0</span>;
&nbsp;
	bl_mc.<span style="color: #0066CC;">_x</span> = <span style="color: #cc66cc;">0</span>;
	bl_mc.<span style="color: #0066CC;">_y</span> = <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">height</span>;
&nbsp;
	br_mc.<span style="color: #0066CC;">_x</span> = <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">width</span>;
	br_mc.<span style="color: #0066CC;">_y</span> = <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">height</span>;
&nbsp;
	center_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;">0.5</span>;
	center_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;">0.5</span>;
	center_mc.<span style="color: #0066CC;">_width</span> = <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">width</span> - <span style="color: #cc66cc;">160</span>;
	center_mc.<span style="color: #0066CC;">_height</span> = <span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">height</span> - <span style="color: #cc66cc;">160</span>;
<span style="color: #66cc66;">&#125;</span>
resetStage<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> stageResizeListener:<span style="color: #0066CC;">Object</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
stageResizeListener.<span style="color: #0066CC;">onResize</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>
	resetStage<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">addListener</span><span style="color: #66cc66;">&#40;</span>stageResizeListener<span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div>

<p><strong> </strong></p>
<p><strong>onResize_example.html 의 주의점.</strong></p>
<p>플래시가 앉혀지는 html 의 object와 embed 태그의 width 와 height 를 모두 100% 로 해줘야 합니다. 즉, 플래시의 크기 자체는 html 상의 상위 요소의 width 와 height 에 따라 꽉 채워지도록 100%로 설정하고, 나머지는 브라우져 크기 변화에 맏기는 겁니다.<br />
한가지 주의할 점은, html 상단에 정의하는 DOCTYPE 이 XHTML 1.0 인 경우에는 스타일 시트의 html과 body 요소까지 height 속성을 100% 으로 설정해야 swf 가 의도된대로 표현됩니다. (DOCTYPE 이 HTML 4.0인 경우에는 div 까지만 height=&#8221;100%&#8221; 설정해도 동작합니다.)</p>
<p>* AS3.0 버전이 필요한 분은 <a href="./258">AS3.0, RESIZE 이벤트를 이용한 풀플래시 stage 무비클립 제어</a> 를 클릭하세요.</p>
]]></content:encoded>
			<wfw:commentRss>http://ufx.kr/blog/62/feed</wfw:commentRss>
		<slash:comments>48</slash:comments>
		</item>
	</channel>
</rss>

