<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<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/"
	>

<channel>
	<title>блохи</title>
	<link>http://blog.pirrest.com</link>
	<description>Чому блохи? Тому що чухаються :) Інколи флеш видає щось нове і подекуди не логічне. І це чухається, доки не зрозумієш чому так, а не інакше. А розчухати самотужки не завжди виходить, тож пропоную ловити бліх разом :)</description>
	<pubDate>Sun, 15 Jun 2008 15:33:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>ru</language>
			<item>
		<title>Flex Builder иногда &#8220;не видит&#8221; класс</title>
		<link>http://blog.pirrest.com/ru/2008/06/15/84/</link>
		<comments>http://blog.pirrest.com/ru/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;(&#8221;, то Flex Builder не подскажет имя класса в котором есть подобный if.
Вот пример:

package

{


public class Flea
{

public function Flea()
{

if(this.hasOwnProperty(&#8221;startJump&#8221;))

(this as Object).startJump()




}


}


}

В другом классе того же проекта при нажатии Ctrl+Space мы не увидим класс Flea.

Также в самом классе не будут работать большинство возможностей Flex [...]]]></description>
			<content:encoded><![CDATA[<p>Если условием оператора if является результат функции, и тело оператора начинается со скобки &#8220;(&#8221;, то Flex Builder не подскажет имя класса в котором есть подобный if.</p>
<p>Вот пример:</p>
<ol class="code">
<li>package
<ol>
<li>{</li>
</ol>
<ol>
<li>public class Flea</li>
<li>{
<ol>
<li>public function Flea()</li>
<li>{
<ol>
<li>if(this.hasOwnProperty(&#8221;startJump&#8221;))
<ol>
<li>(this as Object).startJump()</li>
</ol>
</li>
</ol>
</li>
<li>}</li>
</ol>
</li>
<li>}</li>
</ol>
</li>
<li>}</li>
</ol>
<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 <img src='http://blog.pirrest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ol class="code">
<li>if(this.hasOwnProperty(&#8221;startJump&#8221;))</li>
<li>{
<ol>
<li>(this as Object).startJump()</li>
</ol>
</li>
<li>}</li>
</ol>
<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/ru/2008/06/15/84/feed/</wfw:commentRss>
		</item>
		<item>
		<title>getter/setter + (increment &#124;&#124; decrement) = жук в компиляторе</title>
		<link>http://blog.pirrest.com/ru/2008/05/30/83/</link>
		<comments>http://blog.pirrest.com/ru/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.
Думаю получается вот так:
var num2:Number = set num(get [...]]]></description>
			<content:encoded><![CDATA[<p>Имеем переменную заданную с помощью get и set функций:</p>
<ol class="code">
<li>var _num:Number = 0;</li>
<li>function get num():Number</li>
<li>{
<ol>
<li>    return _num;</li>
</ol>
</li>
<li>}</li>
<li>function set num(value:Number):void</li>
<li>{
<ol>
<li>    _num = value;</li>
</ol>
</li>
<li>}</li>
</ol>
<p>Создаём ещё одну переменную:</p>
<p><code>var num2:Number = num++;</code></p>
<p>Получаем ошибку компиляции:</p>
<p><code>1067: Implicit coercion of a value of type void to an unrelated type Number.</code></p>
<p>Думаю получается вот так:</p>
<p><code>var num2:Number = set num(get num() +1);</code></p>
<p>А так как результат set num() равен <strong>void</strong>, то мы и получаем ошибку.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/ru/2008/05/30/83/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Загадка про switch + XML</title>
		<link>http://blog.pirrest.com/ru/2008/05/29/82/</link>
		<comments>http://blog.pirrest.com/ru/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=&#8221;1&#8243;&#62;&#60;/root&#62;;
switch(xx.@attr)
{

case 1:

trace(&#8221;Case: 1&#8243;);


break;
case &#8220;1&#8243;:

trace(&#8221;Case: 2&#8243;);


break;
default:

trace(&#8221;Default&#8221;);




}

Что будет в output?

]]></description>
			<content:encoded><![CDATA[<p>Код:</p>
<ol class="code">
<li>var xx:XML = &lt;root attr=&#8221;1&#8243;&gt;&lt;/root&gt;;</li>
<li>switch(xx.@attr)</li>
<li>{
<ol>
<li>case 1:
<ol>
<li>trace(&#8221;Case: 1&#8243;);</li>
</ol>
</li>
<li>break;</li>
<li>case &#8220;1&#8243;:
<ol>
<li>trace(&#8221;Case: 2&#8243;);</li>
</ol>
</li>
<li>break;</li>
<li>default:
<ol>
<li>trace(&#8221;Default&#8221;);</li>
</ol>
</li>
</ol>
</li>
<li>}</li>
</ol>
<p>Что будет в output?</p>
<p> <a href="http://blog.pirrest.com/ru/2008/05/29/82/#more-82" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/ru/2008/05/29/82/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#60;mx:Binding /&#62;</title>
		<link>http://blog.pirrest.com/ru/2008/05/28/81/</link>
		<comments>http://blog.pirrest.com/ru/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-компонента), которая связывается (binding) с переменной внутреннего компонента:

&#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&#62;
&#60;mx:Canvas xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; width=&#8221;400&#8243; height=&#8221;300&#8243;&#62;

&#60;mx:TextInput text=&#8221;{textInputText}&#8221; /&#62;
&#60;mx:String id=&#8221;textInputText&#8221; /&#62;


&#60;/mx:Canvas&#62;

Но при этом связывание одностороннее, т.е. в приведённом примере, если пользователь введёт текст в поле, то переменная textInputText не измениться. На помощь приходит тег &#60;Binding&#62;.

&#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&#62;
&#60;mx:Canvas xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; width=&#8221;400&#8243; height=&#8221;300&#8243;&#62;

&#60;mx:TextInput id=&#8221;ti&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Довольно часто мы создаём глобальную переменную (в рамках mxml-компонента), которая связывается (binding) с переменной внутреннего компонента:</p>
<ol class="code">
<li>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;</li>
<li>&lt;mx:Canvas xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; width=&#8221;400&#8243; height=&#8221;300&#8243;&gt;
<ol>
<li>&lt;mx:TextInput text=&#8221;{<strong>textInputText</strong>}&#8221; /&gt;</li>
<li>&lt;mx:String id=&#8221;<strong>textInputText</strong>&#8221; /&gt;</li>
</ol>
</li>
<li>&lt;/mx:Canvas&gt;</li>
</ol>
<p>Но при этом связывание одностороннее, т.е. в приведённом примере, если пользователь введёт текст в поле, то переменная textInputText не измениться. На помощь приходит тег &lt;Binding&gt;.</p>
<ol class="code">
<li>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;</li>
<li>&lt;mx:Canvas xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; width=&#8221;400&#8243; height=&#8221;300&#8243;&gt;
<ol>
<li>&lt;mx:TextInput <strong>id=&#8221;ti&#8221;</strong> text=&#8221;{textInputText}&#8221; /&gt;</li>
<li>&lt;mx:String id=&#8221;textInputText&#8221; /&gt;</li>
<li>&lt;mx:Binding source=&#8221;<strong>ti.text</strong>&#8221; destination=&#8221;<strong>textInputText</strong>&#8221; /&gt;</li>
</ol>
</li>
<li>&lt;/mx:Canvas&gt;</li>
</ol>
<p>Единственный минус в том, что нужно придумывать id для TextInput <img src='http://blog.pirrest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong><font color="#008000">Обновление:</font></strong></p>
<p>Оказывается можно сделать проще <img src='http://blog.pirrest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ol class="code">
<li>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;</li>
<li>&lt;mx:Canvas xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; width=&#8221;400&#8243; height=&#8221;300&#8243;&gt;
<ol>
<li>&lt;mx:TextInput id=&#8221;ti&#8221; text=&#8221;{textInputText}&#8221; /&gt;</li>
<li>&lt;mx:String id=&#8221;textInputText&#8221;&gt;<strong>{ti.text}</strong>&lt;/mx:String&gt;</li>
</ol>
</li>
<li>&lt;/mx:Canvas&gt;</li>
</ol>
<p>Это не избавляет нас от придумывания id, но бережёт одну строчку кода. А &lt;binding&gt; можно использовать для связывания к больше чем одному объекту.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/ru/2008/05/28/81/feed/</wfw:commentRss>
		</item>
		<item>
		<title>flash.trace.Trace</title>
		<link>http://blog.pirrest.com/ru/2008/05/26/80/</link>
		<comments>http://blog.pirrest.com/ru/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>Да, есть такой класс, очень не приметный, но может быть очень полезным <img src='http://blog.pirrest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </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>
<ol class="code">
<li>private function traceListener(
<ol>
<li>fileInfo:String,</li>
<li>lineNumber:String,</li>
<li>classAndMethod:String,</li>
<li>methodArguments:String</li>
</ol>
</li>
<li>):void</li>
</ol>
<p><strong>fileInfo</strong> - папка, где находится файл + &#8220;;&#8221; + что-то ещё (у меня была пустая строка) <img src='http://blog.pirrest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> + &#8220;;&#8221; + имя файла.</p>
<p>Пример: &#8220;D:\Projects\ForTestsF3\src;;ForTestsF3.mxml&#8221;</p>
<p><strong>lineNumber</strong> - номер строчки</p>
<p><strong>classAndMethod</strong> - полное имя класса + (&#8221;/&#8221; || &#8220;$/&#8221; ) + имя метода.</p>
<p>Примеры: &#8220;flash.display::DisplayObjectContainer/addChild&#8221;</p>
<p>&#8220;flash.trace::Trace$/setListener&#8221; - &#8220;$/&#8221; используется, если метод статичный</p>
<p><strong>methodArguments</strong> -входные параметры метода, разделённые запятой (,). Но если параметры заданы с помощью rest оператора (&#8230;), то они показаны не будут.</p>
<h3><strong>Trace.getListener():Function</strong></h3>
<p>Возвращает, заданную раньше, функцию-листенер.</p>
<p>Вот пример:</p>
<ol class="code">
<li>import flash.trace.Trace;</li>
<li>function test(t:String):String</li>
<li>{
<ol>
<li>return t;</li>
</ol>
</li>
<li>}</li>
<li>Trace.setLevel(Trace.METHODS_WITH_ARGS, Trace.FILE);</li>
<li>var st:String = &#8220;hello!&#8221;;</li>
<li>test(st);</li>
<li>stop();</li>
</ol>
<p>В output увидите:</p>
<ol class="code">
<li>14554003 AVMINF: MTHD Untitled_fla::MainTimeline/test (&#8221;hello!&#8221;) @ 0&#215;042F0300</li>
<li>4554004 AVMINF: MTHD flash.display::MovieClip/stop () @ 0&#215;0EF004D0</li>
</ol>
<p><strong>Огромное спасибо 7thsky за помощь!</strong><cite></cite></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/ru/2008/05/26/80/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[AIR] NativeMenu + SystemTrayIcon - MouseEvent.RIGHT_CLICK = БОЛТ</title>
		<link>http://blog.pirrest.com/ru/2008/04/15/79/</link>
		<comments>http://blog.pirrest.com/ru/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() принимает первым параметром Stage, но у SystemTrayIcon нет stage [...]]]></description>
			<content:encoded><![CDATA[<p>Да, в <strong>AIR</strong> можно использовать своё контекстное меню, добавлять подменю и т.д. Мы даже можем вызвать его, когда захочем, а не только по правому клику. Для этого у класса <strong>NativeMenu</strong> есть метод:</p>
<ol class="code">
<li>NativeMenu.display(stage:Stage, stageX:Number, stageY:Number):void</li>
</ol>
<p>Всё бы хорошо, но есть одно <strong>но</strong> <img src='http://blog.pirrest.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Как Вы видите метод <strong>display()</strong> принимает первым параметром <strong>Stage</strong>, но у <strong>SystemTrayIcon</strong> нет <strong>stage</strong> <img src='http://blog.pirrest.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> Т.е. если нам нужно отобразить меню возле трея (с помощью <strong>display()</strong>), то нужно использовать <strong>Application.application.stage</strong>, но тогда нам нужно будет поразмыслить как спозиционировать меню <img src='http://blog.pirrest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Ведь координаты <strong>SystemTrayIcon</strong> неизвестны&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/ru/2008/04/15/79/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Метагег [MIXIN] во Flex</title>
		<link>http://blog.pirrest.com/ru/2008/03/27/77/</link>
		<comments>http://blog.pirrest.com/ru/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>
<ol class="code">
<li>public static function init(root:DisplayObject):void</li>
</ol>
<p>А запустит её <strong>SystemManager</strong>.</p>
<p>В помощи Flex есть упоминания про этот метатег, найти их можна выполнив поиск по слову <strong>mixin</strong> <img src='http://blog.pirrest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/ru/2008/03/27/77/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Как с помощью [embed] встроить swf с кодом</title>
		<link>http://blog.pirrest.com/ru/2008/03/21/74/</link>
		<comments>http://blog.pirrest.com/ru/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>
<ol class="code">
<li>[Embed(&#8221;assets/flea.swf&#8221;, mimeType=&#8221;application/octet-stream&#8221;)]</li>
<li>private var FleaAsset:Class;</li>
</ol>
<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>
<ol class="code">
<li>var currLoader:Loader = new Loader();</li>
<li>var ldrContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);</li>
<li>currLoader.loadBytes( new FleaAsset(), ldrContext );</li>
</ol>
<p><strong>ldrContext </strong>мы используем, что бы быть уверенными, что класс, который находиться в  <strong>FleaAsset </strong>будет тем же самым, что и во Flex проекте.</p>
<p>Далее, что бы класс из <strong>FleaAsset </strong>появился для нашего использования нам нужно подождать один кадр. Это не очень хорошо, но как это обойти я не знаю.</p>
<ol class="code">
<li>var sprite:Sprite = new Sprite();</li>
<li>sprite.addEventListener(Event.ENTER_FRAME, enterFrameHandler);</li>
</ol>
<p>Далее, мы просто создаём экземпляр класса <strong>assets.Flea </strong>и используем его как хотим. Вся графическая часть, созданная во <strong>Flash IDE</strong> останется <img src='http://blog.pirrest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ol class="code">
<li>import assets.Flea;</li>
<li>function enterFrameHandler(event:Event):void</li>
<li>{
<ol>
<li>var flea:Flea = new Flea();</li>
</ol>
<ol>
<li>addChild(flea);</li>
</ol>
<ol>
<li>flea.startJumping();</li>
<li>sprite.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);</li>
</ol>
</li>
<li>}</li>
</ol>
<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
<p></a></li>
<li><a href="http://livedocs.adobe.com/flex/3/html/18_Client_System_Environment_5.html" target="_blank">Про ApplicationDomain и зачем он нужен
<p></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/ru/2008/03/21/74/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SWF metatag</title>
		<link>http://blog.pirrest.com/ru/2008/03/20/73/</link>
		<comments>http://blog.pirrest.com/ru/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"><code>[SWF(width="800", height="600", frameRate="30", backgroundColor="#FFFFFF")]</code></p>
<p>Поместите его перед определением главного класса.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/ru/2008/03/20/73/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DisplayObjectContainer.removeAllChildren()</title>
		<link>http://blog.pirrest.com/ru/2008/03/19/71/</link>
		<comments>http://blog.pirrest.com/ru/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> <img src='http://blog.pirrest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Вот, по-моему, самая элегантная реализация (подсказали Адобовцы):</p>
<ol class="code">
<li>public function removeAllChildren():void</li>
<li>{
<ol>
<li>while (numChildren &gt; 0)
<ol>
<li>removeChildAt(0);</li>
</ol>
</li>
</ol>
</li>
<li>}</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.pirrest.com/ru/2008/03/19/71/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
