<?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>Nicolas Prof blog &#187; Опыт</title>
	<atom:link href="http://blog.nicolasprof.com/category/opyt/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.nicolasprof.com</link>
	<description>Flash блог</description>
	<lastBuildDate>Thu, 29 Dec 2011 17:47:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>XML : Nesting level</title>
		<link>http://blog.nicolasprof.com/xml-nesting-level</link>
		<comments>http://blog.nicolasprof.com/xml-nesting-level#comments</comments>
		<pubDate>Thu, 10 Feb 2011 15:37:42 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Опыт]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[E4X]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=696</guid>
		<description><![CDATA[Есть задача, имея ссылку на XML Node, узнать его уровень вложения в определенном типе элементов. 1 2 3 4 5 6 7 8 function getNestingLevel&#40;$node : XML, $level : int, $name : String&#41; : int&#123; var parent : XML = $node.parent&#40;&#41;; if&#40;parent != null &#38;&#38; parent.localName&#40;&#41; == $name&#41;&#123; return getNestingLevel&#40;parent, ++$level, $name&#41;; &#125; &#160; return [...]]]></description>
			<content:encoded><![CDATA[<p>Есть задача, имея ссылку на XML Node, узнать его уровень вложения в определенном типе элементов.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #339966; font-weight: bold;">function</span> getNestingLevel<span style="color: #000000;">&#40;</span>$node <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">XML</span><span style="color: #000066; font-weight: bold;">,</span> $level <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">int</span><span style="color: #000066; font-weight: bold;">,</span> $name <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">String</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">int</span><span style="color: #000000;">&#123;</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">parent</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">XML</span> = $node<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">parent</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">if</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">parent</span> <span style="color: #000066; font-weight: bold;">!</span>= <span style="color: #0033ff; font-weight: bold;">null</span> <span style="color: #000066; font-weight: bold;">&amp;&amp;</span> <span style="color: #004993;">parent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">localName</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> == $name<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">return</span> getNestingLevel<span style="color: #000000;">&#40;</span><span style="color: #004993;">parent</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000066; font-weight: bold;">++</span>$level<span style="color: #000066; font-weight: bold;">,</span> $name<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0033ff; font-weight: bold;">return</span> $level<span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>Где и как этим пользоваться?<br />
Есть структура XML для древовидного меню к примеру, элементы которого имеют имя &#8211; item.<br />
Тогда:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">level</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">int</span> = getNestingLevel<span style="color: #000000;">&#40;</span>someInnerXMLElement<span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #990000;">&quot;item&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/xml-nesting-level/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Metacritic Widget</title>
		<link>http://blog.nicolasprof.com/metacritic-widget</link>
		<comments>http://blog.nicolasprof.com/metacritic-widget#comments</comments>
		<pubDate>Fri, 22 Oct 2010 11:03:24 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Application]]></category>
		<category><![CDATA[Опыт]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Metacritic]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=589</guid>
		<description><![CDATA[В нынешнее время информационных технологий мы все больше и больше начали ценить свое время. Мы уже не хотим терять 2 часа своей жизни на убогий фильм или сидеть, скучать в кинотеатре над дешевым творением очередного горе режиссера &#8211; тратим драгоценное время, портим себе настроение и т.п. Так же есть еще игры, где объективная оценка критична. [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript">
			var flashvars = {};
			var params = {};
			params.base = "/f/metacritic/";
			var attributes = {};
			swfobject.embedSWF("/f/metacritic/list.swf", "list", "200", "300", "10.0.0", false, flashvars, params, attributes);
</script></p>
<p><script type="text/javascript">
			var flashvars = {};
			var params = {};
			params.base = "/f/metacritic/";
			var attributes = {};
			swfobject.embedSWF("/f/metacritic/mark.swf", "mark", "180", "80", "10.0.0", false, flashvars, params, attributes);
</script></p>
<div style="position: relative;">
<div style="left: 0px; position: absolute; top: 0px;">
<div id="list"><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></div>
</div>
<div style="left: 0px; position: absolute; top: 330px;">
<div id="mark"><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></div>
</div>
<div style="margin-left: 220px;">
<p>В нынешнее время информационных технологий мы все больше и больше начали ценить свое время. Мы уже не хотим терять 2 часа своей жизни на убогий фильм или сидеть, скучать в кинотеатре над дешевым творением очередного горе режиссера &#8211; тратим драгоценное время, портим себе настроение и т.п.<br />
Так же есть еще игры, где объективная оценка критична. Конечно, многие разработчики предлагают ознакомиться с игрой посредством Demo версии, но не у всех есть время на демонстрационную версию игры. Здесь мы тоже хотим знать ответ на главный вопрос: «Как игра? Стоит покупать/качать?»<br />
Не будем делать излишней рекламы, и вдаваться в подробности, но существует замечательный портал-агрегат оценок мультимедийной продукции: игры, фильмы, телевизионные шоу, музыка. Это Metacritic. Прелесть этого портала, что он собирает оценки престижных издательств, интернет порталов, и предоставляет нам уже объективное мнение критиков о продукции. Так же существует оценка пользователей, и каждый волен сам уже сделать выбор какая оценка для него более приоритетная: оценка критиков или пользователей.
</p>
<p>Немного о приложении:<br />
1. Подстраивается под любой размер. (По умолчанию, изменяется размер шрифта)<br />
2. Обладая исходными файлами вы можете легко изменить дизайн.</p>
<p>Логика работы следующая: вы передаете в приложение тип мультимедиа содержимого и полное название, к примеру: game, xbox-360, Dante&#8217;s Inferno; приложение формирует ссылку, и обрабатывает данные, и отображает уже оценку.</p>
<p>Так же вы можете воспользоваться демонстрацией работы приложения, нажимайте по интересующим вас играм или фильмам.</p>
<p><a href="http://blog.nicolasprof.com/wp-content/plugins/download-monitor/download.php?id=14" title="Metacritic Widget"><strong>Download Source Files (<span class="downCount">228</span> times)</strong></a>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/metacritic-widget/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SimplePreloader for Animator</title>
		<link>http://blog.nicolasprof.com/simplepreloader-for-animator</link>
		<comments>http://blog.nicolasprof.com/simplepreloader-for-animator#comments</comments>
		<pubDate>Thu, 06 May 2010 17:05:34 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Опыт]]></category>
		<category><![CDATA[Эксперименты]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=510</guid>
		<description><![CDATA[Специально для людей, которые не очень «дружат» с AS3. Сделал простенький preloader. Ради интереса воспользовался ByteTween. Все что нужно, это иметь под рукой preloader.fla, в котором, на сцене должен находиться MovieClip, будущий preloader. Preloader может состоять из 100 фреймов, каждый фрейм соответствует проценту загрузки, а так же может содержать текстовое поле (Dynamic) с именем &#8216;txt&#8217;, [...]]]></description>
			<content:encoded><![CDATA[<p>Специально для людей, которые не очень «дружат» с AS3. Сделал простенький preloader.<br />
Ради интереса воспользовался ByteTween.</p>
<p>Все что нужно, это иметь под рукой preloader.fla, в котором, на сцене должен находиться MovieClip, будущий preloader.<br />
Preloader может состоять из 100 фреймов, каждый фрейм соответствует проценту загрузки, а так же может содержать текстовое поле (Dynamic) с именем &#8216;txt&#8217;, для отображения статуса загрузки.<br />
Все что нужно произвести, это небольшие изменения в файле Settings.as, где нужно указать путь к файлу, который нужно загружать, если preloader.swf и загружаемый файл находятся в одной папке, то просто укажите название файла. А так же в Settings.as, необходимо указать имя MovieClip preloader&#8217;а, находящегося на сцене. По умолчанию, &#8216;stagePreloader&#8217;.</p>
<p><a href="http://blog.nicolasprof.com/wp-content/plugins/download-monitor/download.php?id=13" title="Simple Preloader for Animator Source Files"><strong>Download Source Files</strong></a> </p>
<p>P.S.<br />
ByteTween ужасный Tween Engine, не пользуйтесь им, в серьезных проектах, он не стоит сэкономленных 1,5кб.<br />
Старался максимально доходчиво написать&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/simplepreloader-for-animator/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tips &amp; Tricks 3</title>
		<link>http://blog.nicolasprof.com/tips-tricks-3</link>
		<comments>http://blog.nicolasprof.com/tips-tricks-3#comments</comments>
		<pubDate>Mon, 07 Dec 2009 20:05:26 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Опыт]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Papervision]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=302</guid>
		<description><![CDATA[Papervision: При использовании 3Д на сайте, в 90% случаев необходимы 3D объекты в масштабе 1:1 к 2D объектам. В последнем проекте необходимо было сделать куб как элемент навигации, при этом текстуры на гранях не должны были масштабироваться: [as] _camera.z = (_camera.zoom &#8211; 1) * _camera.focus + _cubeSide * 0.5; [/as] куб находится в нулевых координатах. [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>
Papervision: При использовании 3Д на сайте, в 90% случаев необходимы 3D объекты в масштабе 1:1 к 2D объектам. В последнем проекте необходимо было сделать куб как элемент навигации, при этом текстуры на гранях не должны были масштабироваться:<br />
[as]<br />
_camera.z = (_camera.zoom &#8211; 1) * _camera.focus + _cubeSide * 0.5;<br />
[/as]<br />
куб находится в нулевых координатах.
</li>
<li>
Если есть XML дерево, в котором, одно и тоже XML property может присутствовать не во всех элементах дерева. И при применении фильтра:<br />
[as]<br />
myXML..item.(@id == someID)<br />
[/as]<br />
вы получаете ReferenceError о том, что переменная @id не определена. Используйте другой фильтр:<br />
[as]<br />
myXML..item.(attribute(&#8216;id&#8217;) == someID)<br />
[/as]
</li>
<li>
При разработке сайта, на котором будет функционал требующий работы с SharedObject, приходится поверять логику работы, когда человек впервые на сайте, и не только. Самый простой способ, это удалить файл .sol. Если вы думаете, что очистка кэша в браузере поможет вам, то вы ошибаетесь. Так же вы конечно можете сделать программную кнопку, при нажатии на которую, будет происходить удаление SharedObject. Но все же, пару раз удалить файл из системы, как по мне, проще. Более подробно, где их искать в различных системах, можно почитать в <a href="http://en.wikipedia.org/wiki/Local_Shared_Object">Wikipedia</a>
</li>
<li>
Timer отрабатывает не сразу после вызова метода start(), а лишь через значение delay, которое вы указали в конструкторе. Что бы заставить отработать сразу, правильнее всего сделать вот так:<br />
[as]<br />
_someTimer.dispatchEvent(new TimerEvent(TimerEvent.TIMER));<br />
_someTimer.start();<br />
[/as]</p>
<p>[as]<br />
this.someTimerListener(null);<br />
[/as]<br />
Вызвать сразу listener, плохо тем, что вы не сможете использовать updateAfterEvent
</li>
<li>
Маска с поддержкой прозрачности с помощью BlendMode. Хорошая вещь, как для программистов, когда требуется создать полупрозрачную маску, и при этом контент под маской анимируется, так и для аниматоров, так как не нужно никакого кода.<br />
Техника очень проста:<br />
есть контейнер в котором все объекты, маска и содержимое, которое нужно поместить под маску. Для этого контейнера устанавливаем BlendMode.LAYER.<br />
[as]<br />
_container.blendMode = BlendMode.LAYER;<br />
[/as]<br />
Все размещается по слоям. Маска обязательно находится выше содержимого. Для маски устанавливаем BlendMode.ALPHA.<br />
[as]<br />
_gradMask.blendMode = BlendMode.ALPHA;<br />
[/as]<br />
Если необходимо маскировать содержимое выходящее за пределы маски, создается еще одна маска, и уже привычным способом применяется к содержимому<br />
[as]<br />
_content.mask = _mask;<br />
[/as]</p>
<p>В итоге, все будет выглядеть где то так:<br />
[as]<br />
_container.addChild(_content);<br />
_container.addChild(_gradMask);<br />
_container.addChild(_mask);</p>
<p>_gradMask.mouseEnabled = false;<br />
_gradMask.blendMode = BlendMode.ALPHA;<br />
_container.blendMode = BlendMode.LAYER;<br />
_content.mask = _mask;<br />
[/as]</p>
<p>P.S.<br />
Более подробно для аниматоров. Создаем Movieclip, меняем ему BlendMode на Layer, помещаем в него 3 Movieclip&#8217;a: Нижний слой &#8211; Содержимое, Средний слой &#8211; маска, делаем ее маской для содержимого, Верхний слой &#8211; полупрозрачная маска, меняем ей BlendMode на Alpha (не нужно полупрозрачную маску совать под маску, или пытаться ее тоже сделать маской).</p>
<p>P.P.S.<br />
Если кто то всю жизнь пользовался только таким способом с помощью BlendMode, то для вас есть более простой способ, который отлично подходит для статического содержимого, к примеру текст.<br />
[as]<br />
_mask.cacheAsBitmap = true;<br />
_content.cacheAsBitmap = true;<br />
_content.mask = _mask;<br />
[/as]</p>
<p>Те же кто думал, что нужно BlendMode + cacheAsBitmap, то исправляйте код. Разве что вы могли использовать cacheAsBitmap для сложного вектора.
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/tips-tricks-3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips &amp; Tricks 2</title>
		<link>http://blog.nicolasprof.com/tips-tricks-2</link>
		<comments>http://blog.nicolasprof.com/tips-tricks-2#comments</comments>
		<pubDate>Thu, 02 Jul 2009 15:00:42 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Опыт]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[trick]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=250</guid>
		<description><![CDATA[1. Быстрое получение значения после запятой. [as] public function getDecimal($value : Number) : Number { return $value &#8211; ($value >> 0); } [/as] 2. Что бы не было проблем с получением DisplayObject&#8217;а после использования myMovieClipHolder.gotoAndStop(). Используйте Event.ENTER_FRAME, до того как событие отработает один раз. Использование MovieClip распространено в многоязычных версиях сайтов, сделав лэйблы: ru, en, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1.</strong> Быстрое получение значения после запятой.<br />
[as]<br />
public function getDecimal($value : Number) : Number {<br />
	return $value &#8211; ($value >> 0);<br />
}<br />
[/as]</p>
<p><strong>2.</strong> Что бы не было проблем с получением DisplayObject&#8217;а после использования myMovieClipHolder.gotoAndStop(). Используйте Event.ENTER_FRAME, до того как событие отработает один раз. Использование MovieClip распространено в многоязычных версиях сайтов, сделав лэйблы: ru, en, ua.<br />
[as]<br />
private function onChangelanguage(e : Event) : void {<br />
	if(_k > 0){<br />
		this.removeEventListener(Event.ENTER_FRAME, onChangelanguage);<br />
		registerMC();<br />
	}<br />
	_k++;<br />
}<br />
[/as]</p>
<p><strong>3.</strong> Являюсь ярым поклонником TweenLite разрабатываемого Jack Doyle. Не так давно, проект стал платформой для программной анимации, и легко расширяется плагинами. Я с вами поделюсь двумя плагинами, один из которых я использую в 40% всех программных анимаций &#8211; <a href="/downloads/AutoDeletePlugin.rar">AutoDeletePlugin</a>. <a href="/downloads/ShortRadianRotationPlugin.rar">ShortRadianRotationPlugin</a> &#8211; позволяет работать с радианами, как это сделано в Alternativa 3D. AutoDeletePlugin &#8211; применяется только для DisplayObject. По завершению анимации, больше не нужно использовать onComplete, что бы удалить DisplayObject.</p>
<p><strong>4.</strong> Быстрый и удобный, но не самый надежный способ убрать интерактивность с элементов интерфейса. Допустим есть некая форма, элементы которой содержатся в одном контейнере, пусть он будет называться formHolder.<br />
[as]<br />
private function toggleForm($state : Boolean) : void {<br />
	formHolder.mouseChildren = $state;<br />
}<br />
[/as]<br />
Главный минус такой реализации, что необходимо следить за теми элементами интерфейса, которые требуют игнорирования событий от мыши. К примеру лейблы на кнопках, если таких элементов нет, то можете использовать этот метод смело. Так же можно дать понять пользователю, что форма действительно неактивная, добавив одну строчку кода:<br />
[as]<br />
private function toggleForm($state : Boolean) : void {<br />
	formHolder.mouseChildren = $state;<br />
	formHolder.alpha= ($state) ? 1 : 0.6;<br />
}<br />
[/as]</p>
<p><strong>5.</strong> Разрабатывая Pure AS3 проект, вы не сможете использовать «плюшку» Flash Player 10 для работы с текстом. Так как новый фреймворк для работы с текстом использует совсем другой тип встроенного текста, обычный встроенный текст в проекте имеет тип EMBEDDED, когда необходим EMBEDDED_CFF. Решить эту проблему сможет лишь новый Flex SDK 4 версии с расширенным метатэгом Embbed. Но учтите, шрифт будет встроен дважды. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/tips-tricks-2/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tips &amp; Tricks 1</title>
		<link>http://blog.nicolasprof.com/tips-tricks-1</link>
		<comments>http://blog.nicolasprof.com/tips-tricks-1#comments</comments>
		<pubDate>Wed, 03 Jun 2009 17:17:45 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Опыт]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[trick]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=246</guid>
		<description><![CDATA[Как и ранее обещал, начинаю рубрику полезных советов, наблюдений и уклонов от граблей. Поехали. Есть форма построенная на собственной разработки UI компонентах, очень любимых нами, или может даже с помощью стандартных компонентов, которые кстати очень даже качественно написаны. И при отправке формы, или при каких либо других действиях требующих от нас временного блокирования формы кто [...]]]></description>
			<content:encoded><![CDATA[<p>Как и ранее обещал, начинаю рубрику полезных советов, наблюдений и уклонов от граблей. Поехали.</p>
<ol>
<li>Есть форма построенная на собственной разработки UI компонентах, очень любимых нами, или может даже с помощью стандартных компонентов, которые кстати очень даже качественно написаны. И при отправке формы, или при каких либо других действиях требующих от нас временного блокирования формы кто то возможно попробует перебрать список UI компонентов, и если это наши компоненты вызвать некий метод ui.active = false, или если стандартные, то ui.enabled = false. Но такая операция трудоемкая, совсем никому не нужный лишний цикл, плюс ко всему ошибки, если форма сложная, то еще и проверки. Так вот, делать это все не надо, потому как есть намного изящный и на порядок более быстрый подход, а так же из-за простоты реализации еще и снижающий вероятность ошибки. Для блокировки форм, и любых других интерактивных объектов, лучше всего использоваться Sprite. Если необходимо показать какое то модальное окно, то просто добавляем на Stage, наш блокирующий слой, у меня как правило он называется незамысловато _blockLayer. Блокирующий слой заливается посредством Graphics любым цветом с полной прозрачностью и не одно MouseEvent событие не пройдет сквозь блокирующий слой. А еще более быстрый способ, это не использовать Alpha, а использовать BlendMode. Так же закрашиваем блокирующий слой черным (кто не знает, это 0 или умнее 0х000000), и ставим _blockLayer.blendMode = BlendMode.ERASE.</li>
<li>Отдавайте предпочтение маскам реализованным за счет Rectangle, т.е. anyDisObject.scrollRect = new Rectangle(0,0,100,50). Но не забывайте, для премущества от ScrollRect необходимо маскируемый объект кэшировать как изображение cacheAsBitmap = true. Есть несколько неудобств при использовании ScrollRect &#8211; при перемещении, необходимо постоянно обновлять прямоугольник anyDisObject.scrollRect = _dynamicRectangleRef, ну и естественно, что бы не создавать каждый раз новый объект, правильно изначально создать Rectangle, и менять нужные нам параметры: x, y, width, height.</li>
<li>Перед удаление объекта с Display List, сделайте объект невидимым, objToDelete.visible = false. Освободите немного памяти, которой всегда нехватает.</li>
<li>Если ссылке на объект типа Sound назначить null, то тяжелый объект будет сразу высвобожден с памяти.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/tips-tricks-1/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

