<?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>блохи</title>
	<atom:link href="http://blog.pirrest.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.pirrest.com</link>
	<description>Чому блохи? Тому що чухаються :) Інколи флеш видає щось нове і подекуди не логічне. І це чухається, доки не зрозумієш чому так, а не інакше. А розчухати самотужки не завжди виходить, тож пропоную ловити бліх разом :)</description>
	<lastBuildDate>Wed, 24 Nov 2010 09:28:18 +0000</lastBuildDate>
	<language>uk</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Flex Builder іноді &#8220;не бачить&#8221; класу</title>
		<link>http://blog.pirrest.com/2008/06/15/84/</link>
		<comments>http://blog.pirrest.com/2008/06/15/84/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 14:50:38 +0000</pubDate>
		<dc:creator>pirrest</dc:creator>
				<category><![CDATA[Flex Builder 3]]></category>
		<category><![CDATA[Знайдені блохи]]></category>

		<guid isPermaLink="false">http://blog.pirrest.com/2008/06/15/84/</guid>
		<description><![CDATA[Якщо умовою для оператору if є результат функції, та тіло оператору починається з дужки &#8220;(&#8220;, то Flex Builder не підкаже ім&#8217;я класу в якому є подібний if. Ось приклад: package { public class Flea { public function Flea() { if(this.hasOwnProperty("startJump")) (this as Object).startJump() } } } В іншому класі того ж проекту при натисканні Ctrl+Space [...]]]></description>
			<content:encoded><![CDATA[<p>Якщо умовою для оператору if є результат функції, та тіло оператору починається з дужки &#8220;(&#8220;, то Flex Builder не підкаже ім&#8217;я класу в якому є подібний if.</p>
<p>Ось приклад:</p>
<pre class="brush:as3;gutter:1" >package
{
	public class Flea
	{
		public function Flea()
		{
			if(this.hasOwnProperty("startJump"))
				(this as Object).startJump()
		}
	}
}
</pre>
<p>В іншому класі того ж проекту при натисканні Ctrl+Space ми не побачимо клас Flea.</p>
<p><img src="http://blog.pirrest.com/wp-content/uploads/2008/06/1.gif" alt="1.gif" /></p>
<p>Також в самому класі не будуть працювати більшість можливостей Flex Builder, як наприклад перехід по F3, або Ctrl+o.</p>
<p>Такого не станеться, якщо використовувати фігурні дужки для обрамлення тіла оператора if :)</p>
<pre class="brush:as3; gutter:false">if(this.hasOwnProperty("startJump"))
{
	(this as Object).startJump()
}
</pre>
<p>Результат:</p>
<p><img src="http://blog.pirrest.com/wp-content/uploads/2008/06/2.gif" alt="2.gif" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/2008/06/15/84/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>getter/setter + (increment &#124;&#124; decrement) = жук у компіляторі</title>
		<link>http://blog.pirrest.com/2008/05/30/83/</link>
		<comments>http://blog.pirrest.com/2008/05/30/83/#comments</comments>
		<pubDate>Fri, 30 May 2008 13:56:28 +0000</pubDate>
		<dc:creator>pirrest</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Flash IDE]]></category>
		<category><![CDATA[Flex Builder 2]]></category>
		<category><![CDATA[Flex Builder 3]]></category>
		<category><![CDATA[Знайдені блохи]]></category>
		<category><![CDATA[Спіймані блохи]]></category>
		<category><![CDATA[++]]></category>
		<category><![CDATA[--]]></category>
		<category><![CDATA[compile error]]></category>
		<category><![CDATA[decrement]]></category>
		<category><![CDATA[getter]]></category>
		<category><![CDATA[increment]]></category>
		<category><![CDATA[setter]]></category>

		<guid isPermaLink="false">http://blog.pirrest.com/2008/05/30/83/</guid>
		<description><![CDATA[Маємо змінну задану за допомогою get та set функцій: var _num:Number = 0; function get num():Number { return _num; } function set num(value:Number):void { _num = value; } Створюємо іще одну змінну: var num2:Number = num++; Отримуєм помилку компіляції: 1067: Implicit coercion of a value of type void to an unrelated type Number. Вважаю що [...]]]></description>
			<content:encoded><![CDATA[<p>Маємо змінну задану за допомогою get та set функцій:</p>
<pre class="brush:as3">var _num:Number = 0;
function get num():Number
{
	return _num;
}
function set num(value:Number):void
{
	_num = value;
}</pre>
<p>Створюємо іще одну змінну:</p>
<pre class="brush:as3">var num2:Number = num++;</pre>
<p>Отримуєм помилку компіляції:</p>
<pre class="brush:plain">1067: Implicit coercion of a value of type void to an unrelated type Number.</pre>
<p>Вважаю що виходить так:</p>
<pre class="brush:as3">var num2:Number = set num(get num() + 1);</pre>
<p>А так як результат set num()  є <strong>void</strong>, то ми і отримуємо помилку.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/2008/05/30/83/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Загадка про switch + XML</title>
		<link>http://blog.pirrest.com/2008/05/29/82/</link>
		<comments>http://blog.pirrest.com/2008/05/29/82/#comments</comments>
		<pubDate>Thu, 29 May 2008 09:30:35 +0000</pubDate>
		<dc:creator>pirrest</dc:creator>
				<category><![CDATA[Загадки]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://blog.pirrest.com/2008/05/29/82/</guid>
		<description><![CDATA[Код: var xx:XML = &#60;root attr="1"&#62;&#60;/root&#62;; switch(xx.@attr) { case 1: trace("Case: 1"); break; case "1": trace("Case: 2"); break; default: trace("Default"); } Що буде в output? В output буде Default Тому що xx.@attr is XMLList. З подібним треба бути обережним, т.я. особисто я два! рази витрачав по 1-2 години, щоб зловити помилку. При роботі з XML [...]]]></description>
			<content:encoded><![CDATA[<p>Код:</p>
<pre class="brush:as3">var xx:XML = &lt;root attr="1"&gt;&lt;/root&gt;;
switch(xx.@attr)
{
	case 1:
		trace("Case: 1");
	break;
	case "1":
		trace("Case: 2");
	break;
	default:
		trace("Default");
}</pre>
<p>Що буде в output?</p>
<p><span id="more-82"></span></p>
<p>В output буде</p>
<pre class="brush:plain">Default</pre>
<p>Тому що  xx.@attr <strong>is</strong> XMLList.</p>
<p>З подібним треба бути обережним, т.я. особисто я два! рази витрачав по 1-2  години, щоб зловити помилку.</p>
<p>При роботі з XML намагайтесь використовувати зведення типів, якщо Вам потрібний String або Number. Тобто краще написати так:</p>
<pre class="brush:as3">switch( xx.@attr.toString() )</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/2008/05/29/82/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>&lt;mx:Binding /&gt;</title>
		<link>http://blog.pirrest.com/2008/05/28/81/</link>
		<comments>http://blog.pirrest.com/2008/05/28/81/#comments</comments>
		<pubDate>Wed, 28 May 2008 14:39:14 +0000</pubDate>
		<dc:creator>pirrest</dc:creator>
				<category><![CDATA[Flex Builder 2]]></category>
		<category><![CDATA[Flex Builder 3]]></category>
		<category><![CDATA[MXML]]></category>
		<category><![CDATA[Корисні блохи]]></category>
		<category><![CDATA[Binding]]></category>

		<guid isPermaLink="false">http://blog.pirrest.com/2008/05/28/81/</guid>
		<description><![CDATA[Доволі часто ми створюємо глобальну змінну (в рамках mxml-компоненту), яка зв&#8217;язується (binding) зі змінною внутрішнього компоненту: &#60;mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300"&#62; &#60;mx:TextInput text="{textInputText}" /&#62; &#60;mx:String id="textInputText" /&#62; &#60;/mx:Canvas&#62; Але при цьому зв&#8217;язування є одностороннім, тобто, в наведеному прикладі, якщо користувач введе текст в поле, то змінна textInputText не зміниться. На допомогу приходить теґ &#60;Binding&#62;. &#60;mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" [...]]]></description>
			<content:encoded><![CDATA[<p>Доволі часто ми створюємо глобальну змінну (в рамках mxml-компоненту), яка зв&#8217;язується (binding) зі змінною внутрішнього компоненту:</p>
<pre class="brush:xml">
&lt;mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300"&gt;
	&lt;mx:TextInput text="{textInputText}" /&gt;
	&lt;mx:String id="textInputText" /&gt;
&lt;/mx:Canvas&gt;
</pre>
<p>Але при цьому зв&#8217;язування є одностороннім, тобто, в наведеному прикладі, якщо користувач введе текст в поле, то змінна textInputText не зміниться. На допомогу приходить теґ &lt;Binding&gt;.</p>
<pre class="brush:xml">
&lt;mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300"&gt;
	&lt;mx:TextInput id="ti" text="{textInputText}" /&gt;
	&lt;mx:String id="textInputText" /&gt;
	&lt;mx:Binding source="ti.text" destination="textInputText" /&gt;
&lt;/mx:Canvas&gt;
</pre>
<p>Єдиний мінус в тому, що треба вигадувати id для TextInput :)</p>
<p><strong><span style="color: #008000;">Оновлення:</span></strong></p>
<p>Виявляється, що можна зробити простіше :)</p>
<pre class="brush:xml">
&lt;mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300"&gt;
	&lt;mx:TextInput id="ti" text="{textInputText}" /&gt;
	&lt;mx:String id="textInputText"&gt;{ti.text}&lt;/mx:String&gt;
&lt;/mx:Canvas&gt;
</pre>
<p>Це не позбавляє нас від вигадування id, але зберігає одну строчку коду. А &lt;binding&gt; можна використовувати для зв&#8217;язування до більш ніж одного об&#8217;єкту.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/2008/05/28/81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flash.trace.Trace</title>
		<link>http://blog.pirrest.com/2008/05/26/80/</link>
		<comments>http://blog.pirrest.com/2008/05/26/80/#comments</comments>
		<pubDate>Mon, 26 May 2008 12:20:05 +0000</pubDate>
		<dc:creator>pirrest</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Flash IDE]]></category>
		<category><![CDATA[Flex Builder 2]]></category>
		<category><![CDATA[Корисні блохи]]></category>
		<category><![CDATA[flash.trace.Trace]]></category>

		<guid isPermaLink="false">http://blog.pirrest.com/2008/05/26/80/</guid>
		<description><![CDATA[Так, є такий клас, дуже непримітний, але може бути дуже корисним :) Він робить дивовижну річ. Після &#8220;запуску&#8221; видає в output імена УСІХ! методів які виконуються, з іменами класів, до яких належать ці методи. Клас не документовано, тобто як з ним працювати не знаю (google теж нічого не каже), але методами спроб та помилок щось [...]]]></description>
			<content:encoded><![CDATA[<p>Так, є такий клас, дуже непримітний, але може бути дуже корисним :)</p>
<p>Він робить дивовижну річ. Після &#8220;запуску&#8221; видає в output імена УСІХ! методів які виконуються, з іменами класів, до яких належать ці методи. Клас не документовано, тобто як з ним працювати не знаю (google теж нічого не каже), але методами спроб та помилок щось таки вдалось зрозуміти.</p>
<p>Ось усі його методи (клас статичний, тобто усі методи статичні):</p>
<ul>
<li>Trace.setLevel(l:int, target:int=2):Object</li>
<li>Trace.getLevel(target:int=2):int</li>
<li>Trace.setListener(f:Function):Object</li>
<li>Trace.getListener():Function;</li>
</ul>
<h3>Trace.setLevel(l:int, target:int=2):Object</h3>
<p>Виставляє рівень віщування, та ціль віщування.</p>
<p>Першим параметром може бути одна з констант:</p>
<ul>
<li><strong>Trace.METHODS_AND_LINES_WITH_ARGS = 4</strong>
<ul>
<li>Назва методу з вхідними параметрами та номер строчки в коді зі шляхом до класу, в якому виконався метод</li>
</ul>
</li>
<li><strong>Trace.METHODS_AND_LINES = 3</strong>
<ul>
<li>Назва методу та номер строчки</li>
</ul>
</li>
<li><strong>Trace.METHODS_WITH_ARGS = 2</strong>
<ul>
<li>Назва методу з вхідними параметрами</li>
</ul>
</li>
<li><strong>Trace.METHODS = 1</strong>
<ul>
<li>Тільки назва методу</li>
</ul>
</li>
<li><strong>Trace.OFF = 0</strong>
<ul>
<li>Вимкнуто</li>
</ul>
</li>
</ul>
<p>Другим параметром може бути:</p>
<ul>
<li><strong>Trace.LISTENER = 2</strong>
<ul>
<li>Віщувати у функцію, яка буда додана, за допомогою setListener().</li>
</ul>
</li>
<li><strong>Trace.FILE = 1</strong>
<ul>
<li>Віщувати у output.</li>
</ul>
</li>
</ul>
<h3><strong>Trace.getLevel(target:int=2):int</strong></h3>
<p>Повертає рівень віщування для цілі.</p>
<h3><strong>Trace.setListener(f:Function):Object</strong></h3>
<p>Виставляє функцію для віщування при цілі віщування =  Trace.LISTENER.</p>
<p>Функція має приймати 4 параметри:</p>
<pre class="brush:as3">private function traceListener(
	fileInfo:String,
	lineNumber:String,
	classAndMethod:String,
	methodArguments:String
):void</pre>
<p><strong>fileInfo</strong> &#8211; тека, де знаходиться файл + &#8220;;&#8221; + щось іще (в мене була пуста строчка) :) + &#8220;;&#8221; + ім&#8217;я файлу.</p>
<p>Приклад: &#8220;D:\Projects\ForTestsF3\src;;ForTestsF3.mxml&#8221;</p>
<p><strong>lineNumber</strong> &#8211; номер строчки</p>
<p><strong>classAndMethod</strong> &#8211; повне ім&#8217;я класу + (&#8220;/&#8221; || &#8220;$/&#8221; ) + ім&#8217;я методу.</p>
<p>Приклади: &#8220;flash.display::DisplayObjectContainer/addChild&#8221;</p>
<p>&#8220;flash.trace::Trace$/setListener&#8221; &#8211; &#8220;$/&#8221; використовується, якщо визваний метод &#8211; статичний</p>
<p><strong>methodArguments</strong> -вхідні параметри методу, розділені комою (,). Але якщо параметри методу задано за допомогою rest оператору (&#8230;), то вони показані не будуть.</p>
<h3><strong>Trace.getListener():Function</strong></h3>
<p>Повертає заданий раніше лістенер.</p>
<p>Ось приклад:</p>
<pre class="brush:as3">import flash.trace.Trace;
function test(t:String):String
{
	return t;
}
Trace.setLevel(Trace.METHODS_WITH_ARGS, Trace.FILE);
var st:String = "hello!";
test(st);
stop();</pre>
<p>В output отримаєте:</p>
<pre class="brush:plain">	14554003 AVMINF: MTHD Untitled_fla::MainTimeline/test ("hello!") @ 0x042F0300
	4554004 AVMINF: MTHD flash.display::MovieClip/stop () @ 0x0EF004D0</pre>
<p><strong>Дуже дякую 7thsky за допомогу!</strong><cite></cite></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/2008/05/26/80/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>[AIR] NativeMenu + SystemTrayIcon &#8211; MouseEvent.RIGHT_CLICK = та що з маком</title>
		<link>http://blog.pirrest.com/2008/04/15/79/</link>
		<comments>http://blog.pirrest.com/2008/04/15/79/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 09:20:28 +0000</pubDate>
		<dc:creator>pirrest</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Знайдені блохи]]></category>
		<category><![CDATA[NativeMenu]]></category>
		<category><![CDATA[SystemTrayIcon]]></category>

		<guid isPermaLink="false">http://blog.pirrest.com/2008/04/15/79/</guid>
		<description><![CDATA[Так, в AIR є можливість використовувати своє контекстне меню, додавати вкладені меню і т.д. Ми можемо навіть відображати його, коли нам завгодно, а не тільки по правому кліку. Для цього у класу NativeMenu є метод: NativeMenu.display(stage:Stage, stageX:Number, stageY:Number):void Все було б добре, але є одне але :( Як Ви бачите метод display() приймає першим параметром [...]]]></description>
			<content:encoded><![CDATA[<p>Так, в <strong>AIR</strong> є можливість використовувати своє контекстне меню, додавати вкладені меню і т.д. Ми можемо навіть відображати його, коли нам завгодно, а не тільки по правому кліку. Для цього у класу <strong>NativeMenu</strong> є метод:</p>
<pre class="brush:plain">
	NativeMenu.display(stage:Stage, stageX:Number, stageY:Number):void
</pre>
<p>Все було б добре, але є одне <strong>але</strong> :(</p>
<p>Як Ви бачите метод <strong>display()</strong> приймає першим параметром <strong>Stage</strong>, але у <strong>SystemTrayIcon</strong> немає <strong>stage</strong> :( Тобто, якщо нам потрібно відобразити меню біля трею (за допомогою <strong>display()</strong>), то треба використовувати <strong>Application.application.stage</strong>, але тоді треба бути поміркувати як розташувати меню :) Адже координати <strong>SystemTrayIcon</strong> невідомі&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/2008/04/15/79/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Метагеґ [MIXIN] у Flex</title>
		<link>http://blog.pirrest.com/2008/03/27/77/</link>
		<comments>http://blog.pirrest.com/2008/03/27/77/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 13:19:03 +0000</pubDate>
		<dc:creator>pirrest</dc:creator>
				<category><![CDATA[Flex Builder 2]]></category>
		<category><![CDATA[Flex Builder 3]]></category>
		<category><![CDATA[Flex Framework 3]]></category>
		<category><![CDATA[Корисні блохи]]></category>
		<category><![CDATA[[MIXIN]]]></category>

		<guid isPermaLink="false">http://blog.pirrest.com/2008/03/27/77/</guid>
		<description><![CDATA[Якщо Ви проставите метатеґ [MIXIN] у Вашому класі (трохи вище визначення класу), то при старті Вашого Flex-застосування буде викликана статична функція init(): public static function init(root:DisplayObject):void Викличе її SystemManager. У допомозі Flex є згадки про цей метатеґ, знайти їх можна виконавши пошук по слову mixin :)]]></description>
			<content:encoded><![CDATA[<p>Якщо Ви проставите метатеґ <strong>[MIXIN]</strong> у Вашому класі (трохи вище визначення класу), то при старті Вашого Flex-застосування буде викликана статична функція <strong>init()</strong>:</p>
<pre class="brush:plain">
	public static function init(root:DisplayObject):void
</pre>
<p>Викличе її <strong>SystemManager</strong>.</p>
<p>У допомозі Flex є згадки про цей метатеґ, знайти їх можна виконавши пошук по слову <strong>mixin</strong> :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/2008/03/27/77/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Як за допомогою [embed] вбудувати swf з кодом</title>
		<link>http://blog.pirrest.com/2008/03/21/74/</link>
		<comments>http://blog.pirrest.com/2008/03/21/74/#comments</comments>
		<pubDate>Fri, 21 Mar 2008 13:43:14 +0000</pubDate>
		<dc:creator>pirrest</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Flash IDE]]></category>
		<category><![CDATA[Flex Builder 2]]></category>
		<category><![CDATA[Flex Builder 3]]></category>
		<category><![CDATA[Корисні блохи]]></category>
		<category><![CDATA[application/octet-stream]]></category>
		<category><![CDATA[ByteArrayAsset]]></category>
		<category><![CDATA[mimeType]]></category>
		<category><![CDATA[[Embed]]]></category>

		<guid isPermaLink="false">http://blog.pirrest.com/2008/03/21/74/</guid>
		<description><![CDATA[Ми знаємо, що при вбудуванні swf за допомогою теґу [Embed] увесь код, який був у swf-ці, втрачається. Є один спосіб як зберегти код. Спочатку створимо у Flash IDE флешку, головним класом якої буде, наприклад, assets.Flea. В цьому класі є метод startJumping(), який просто починає програвання флешки. Назвемо файл flea.swf. Тепер вбудуємо flea.swf в будь-який клас [...]]]></description>
			<content:encoded><![CDATA[<p>Ми знаємо, що при вбудуванні swf за допомогою теґу <strong>[Embed]</strong> увесь код, який був у swf-ці, втрачається. Є один спосіб як зберегти код.</p>
<p>Спочатку створимо у <strong>Flash IDE</strong> флешку, головним класом якої буде, наприклад, <strong>assets.Flea</strong>. В цьому класі є метод <strong>startJumping()</strong>, який просто починає програвання флешки. Назвемо файл <strong>flea.swf</strong>.</p>
<p>Тепер вбудуємо <strong>flea.swf</strong> в будь-який клас у Flex-проекті:</p>
<pre class="brush:as3">
	[Embed("assets/flea.swf", mimeType="application/octet-stream")]
	private var FleaAsset:Class;
</pre>
<p><strong>mimeType=&#8221;application/octet-stream&#8221;</strong> дає зрозуміти <strong>компілятору Flex</strong>, що вбудування потрібно робити без будь-якої конвертації даних.</p>
<p>Тепер в <strong>FleaAsset </strong>ми маємо клас <strong>ByteArrayAsset</strong>, тобто, практично <strong>ByteArray</strong>.</p>
<p>Далі завантажуємо екземпляр <strong>FleaAsset </strong>до <strong>Loader </strong>за допомогою <strong>loadBytes()</strong>:</p>
<pre class="brush:as3">
	var currLoader:Loader = new Loader();
	var ldrContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
	currLoader.loadBytes( new FleaAsset(), ldrContext );
</pre>
<p><strong>ldrContext </strong>ми використовуємо, щоб бути впевненими, що клас, який знаходиться в <strong>FleaAsset </strong>буде тим самим, що і в Flex проекті.</p>
<p>Далі, щоб клас із <strong>FleaAsset </strong>з&#8217;явився для нашого використання, нам потрібно почекати один кадр. Це не дуже добре, але як це обійти я не знаю.</p>
<pre class="brush:as3">
	var sprite:Sprite = new Sprite();
	sprite.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
</pre>
<p>Далі, ми просто створюємо екземпляр класу <strong>assets.Flea</strong> та використовуємо його як забажаємо. Уся графічна частина цього класу, яку ми створили у <strong>Flash IDE</strong>, буде присутня :)</p>
<pre class="brush:as3">
import assets.Flea;
function enterFrameHandler(event:Event):void
{
	var flea:Flea = new Flea();
	addChild(flea);
	flea.startJumping();
	sprite.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
</pre>
<p>Я зробив <a href="http://blog.pirrest.com/wp-content/uploads/2008/03/embeddingswf.zip">приклад</a> такої собі бібліотеки, яка може спростити роботу з убудованими swf.</p>
<p>Щоб знати більше раджу почитати це (англійською):</p>
<ul>
<li><a href="http://livedocs.adobe.com/flex/3/html/embed_3.html" target="_blank">Про теґ [Embed] та про mimeType які підтримує Flex </a></li>
<li><a href="http://livedocs.adobe.com/flex/3/html/18_Client_System_Environment_5.html" target="_blank">Про ApplicationDomain і навіщо він потрібен</a></li>
<li><a href="http://livedocs.adobe.com/flex/3/langref/mx/core/IFlexAsset.html" target="_blank">Трішки про класи *Asset</a></li>
<li><a href="http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&amp;postid=8046&amp;loc=en_US&amp;productid=2" target="_blank">Приклад вбудування XML</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/2008/03/21/74/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[SWF] metatag</title>
		<link>http://blog.pirrest.com/2008/03/20/73/</link>
		<comments>http://blog.pirrest.com/2008/03/20/73/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 07:54:11 +0000</pubDate>
		<dc:creator>pirrest</dc:creator>
				<category><![CDATA[Flex Builder 2]]></category>
		<category><![CDATA[Flex Builder 3]]></category>
		<category><![CDATA[Корисні блохи]]></category>
		<category><![CDATA[metatag]]></category>
		<category><![CDATA[SWF]]></category>

		<guid isPermaLink="false">http://blog.pirrest.com/2008/03/20/73/</guid>
		<description><![CDATA[В ActionScript проекті (мається на увазі проект в Flex Builder) параметри swf файлу Ви можете встановити за допомогою метатеґу SWF: [SWF(width="800", height="600", frameRate="30", backgroundColor="#FFFFFF")] Помістіть його перед головним класом.]]></description>
			<content:encoded><![CDATA[<p>В <strong>ActionScript</strong> проекті (мається на увазі проект в <strong>Flex Builder</strong>) параметри <strong>swf</strong> файлу Ви можете встановити за допомогою метатеґу <strong>SWF</strong>:</p>
<p align="left">
<pre class="brush:plain">[SWF(width="800", height="600", frameRate="30", backgroundColor="#FFFFFF")]</pre>
</p>
<p>Помістіть його перед головним класом.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/2008/03/20/73/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DisplayObjectContainer.removeAllChildren()</title>
		<link>http://blog.pirrest.com/2008/03/19/71/</link>
		<comments>http://blog.pirrest.com/2008/03/19/71/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 19:15:40 +0000</pubDate>
		<dc:creator>pirrest</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Корисні блохи]]></category>
		<category><![CDATA[DisplayObjectContainer.removeAllChildren()]]></category>

		<guid isPermaLink="false">http://blog.pirrest.com/2008/03/19/71/</guid>
		<description><![CDATA[Я практично впевнений, що Ви хоч раз шукали метод removeAllChildren() у DisplayObjectContainer :) Ось, на мою думку, найелегантніша реалізація (підказали Адобовці): public function removeAllChildren():void { while (numChildren &#62; 0) removeChildAt(0); }]]></description>
			<content:encoded><![CDATA[<p>Я практично впевнений, що Ви хоч раз шукали метод <strong>removeAllChildren()</strong> у <strong>DisplayObjectContainer</strong> :)</p>
<p>Ось, на мою думку, найелегантніша реалізація (підказали Адобовці):</p>
<pre class="brush:as3">
public function removeAllChildren():void
{
	while (numChildren &gt; 0)
		removeChildAt(0);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/2008/03/19/71/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

