<?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</title>
	<atom:link href="http://blog.nicolasprof.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.nicolasprof.com</link>
	<description>Flash блог</description>
	<lastBuildDate>Thu, 06 May 2010 17:08:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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;а, находящегося на сцене. По умолчанию, &#8217;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>Quadratic Bézier &#8211; Segment</title>
		<link>http://blog.nicolasprof.com/quadratic-bezier-segment</link>
		<comments>http://blog.nicolasprof.com/quadratic-bezier-segment#comments</comments>
		<pubDate>Fri, 15 Jan 2010 20:13:28 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Эксперименты]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Bezier]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Math]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=459</guid>
		<description><![CDATA[Сейчас работаю над еще одним очень важным компонентом пользовательского интерфейса &#8211; подсказка (Tooltip).
Так как компонент будет поддерживать закругление углов (Rounded corners), необходимо разработать полноценную логику рисования части кривой Безье, после пересечения с «усиком» подсказки.
Смотреть в действии
P.S.
Всегда хотел иметь компонент такого рода под рукой. Так что, PROFGUI в скором времени обзаведется 5-ым компонентом.
]]></description>
			<content:encoded><![CDATA[<p>Сейчас работаю над еще одним очень важным компонентом пользовательского интерфейса &#8211; подсказка (Tooltip).<br />
Так как компонент будет поддерживать закругление углов (Rounded corners), необходимо разработать полноценную логику рисования части кривой Безье, после пересечения с «усиком» подсказки.</p>
<p><a href="/f/testBezier.swf" rel="shadowbox;height=400;width=618" title="Quadratic Bézier - Segment">Смотреть в действии</a></p>
<p>P.S.<br />
Всегда хотел иметь компонент такого рода под рукой. Так что, PROFGUI в скором времени обзаведется 5-ым компонентом.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/quadratic-bezier-segment/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy New Year 2010</title>
		<link>http://blog.nicolasprof.com/happy-new-year-2010</link>
		<comments>http://blog.nicolasprof.com/happy-new-year-2010#comments</comments>
		<pubDate>Wed, 06 Jan 2010 11:52:23 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Дизайн]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=413</guid>
		<description><![CDATA[Всегда хотел себе такую чашку. И вот, на новый год, мне подарили такую. Всех с наступившим праздником!
]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.nicolasprof.com/wp-content/uploads/2010/01/cup2010.jpg" alt="cup2010" title="cup2010" width="618" height="464" class="alignnone size-full wp-image-414" /></p>
<p>Всегда хотел себе такую чашку. И вот, на новый год, мне подарили такую. Всех с наступившим праздником!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/happy-new-year-2010/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PathFinder : Benchmark</title>
		<link>http://blog.nicolasprof.com/pathfinder-benchmark</link>
		<comments>http://blog.nicolasprof.com/pathfinder-benchmark#comments</comments>
		<pubDate>Mon, 04 Jan 2010 15:50:29 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Эксперименты]]></category>
		<category><![CDATA[AS2]]></category>
		<category><![CDATA[PathFinder]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=411</guid>
		<description><![CDATA[После внесения серьезных изменений в алгоритм «А» звезда (удалось отказаться полностью от списков, и тем самым операций splice), решил сделать тест производительности алгоритмов.
На время влияет расстояние между начальной и конечной точками(длина пути).
Смотреть в действии
P.S.
На практике, нерационально использовать алгоритм Дейкстры, где граф имеет вид сетки.
]]></description>
			<content:encoded><![CDATA[<p>После внесения серьезных изменений в алгоритм «А» звезда (удалось отказаться полностью от списков, и тем самым операций splice), решил сделать тест производительности алгоритмов.<br />
На время влияет расстояние между начальной и конечной точками(длина пути).</p>
<p><a href="/f/pathfinder_benchmark.swf" rel="shadowbox;height=450;width=618" title="PathFinder - Benchmark">Смотреть в действии</a></p>
<p>P.S.<br />
На практике, нерационально использовать алгоритм Дейкстры, где граф имеет вид сетки.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/pathfinder-benchmark/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PathFinder : Demo</title>
		<link>http://blog.nicolasprof.com/pathfinder-demo</link>
		<comments>http://blog.nicolasprof.com/pathfinder-demo#comments</comments>
		<pubDate>Sun, 03 Jan 2010 09:02:38 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Эксперименты]]></category>
		<category><![CDATA[A-Star]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Dijkstra]]></category>
		<category><![CDATA[PathFinder]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=409</guid>
		<description><![CDATA[Предлагаю вашему вниманию, собственную реализацию вспомогательного framework по обнаружению минимального пути в графе. На данном этапе разработки, PathFinder, поддерживает два алгоритма: алгоритм Дейкстры и «А» звезда. Алгоритмы изрядно изменены, для максимальной совместимости с framework, за основу взяты лишь идеи этих алгоритмов. 
Достоинства и недостатки реализованных алгоритмов.
Алгоритм Дейкстры:
+ точное обнаружение минимально пути в графах любой сложности;
+ [...]]]></description>
			<content:encoded><![CDATA[<p>Предлагаю вашему вниманию, собственную реализацию вспомогательного framework по обнаружению минимального пути в графе. На данном этапе разработки, PathFinder, поддерживает два алгоритма: алгоритм Дейкстры и «А» звезда. Алгоритмы изрядно изменены, для максимальной совместимости с framework, за основу взяты лишь идеи этих алгоритмов. </p>
<p>Достоинства и недостатки реализованных алгоритмов.</p>
<p>Алгоритм Дейкстры:<br />
+ точное обнаружение минимально пути в графах любой сложности;<br />
+ позволяет обнаруживать путь в сложных/запутанных графах;<br />
- в 3 раза медленнее, чем алгоритм «А» звезда;</p>
<p>Алгоритм «А» звезда:<br />
+ быстрый метод обнаружения пути;<br />
+ идеально подходит для графов с принципом построения как у «королевского» графа;<br />
- некорректно находит путь в сложных/запутанных графах;</p>
<p><a href="/f/pathfinder_interactivedemo.swf" rel="shadowbox;height=440;width=618" title="PathFinder - Demo">Смотреть в действии</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/pathfinder-demo/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fastest Iteration</title>
		<link>http://blog.nicolasprof.com/fastest-iteration</link>
		<comments>http://blog.nicolasprof.com/fastest-iteration#comments</comments>
		<pubDate>Sat, 26 Dec 2009 09:28:25 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Эксперименты]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=406</guid>
		<description><![CDATA[Небольшой наглядный тест, сравнения итераций. Очень много дискуссий в интернете по поводу, что та или иная итерация быстрее другой.
Самое интересное, что при очень большом количестве итераций (1 000 000 000), разница между различными методиками For, полностью исчезает.
Результаты теста при 1 000 000 000 итераций:
4103 ms
5340 ms
4087 ms
4089 ms
4090 ms
4090 ms
Смотреть в действии
P.S.
Постарайтесь подобрать такое количество [...]]]></description>
			<content:encoded><![CDATA[<p>Небольшой наглядный тест, сравнения итераций. Очень много дискуссий в интернете по поводу, что та или иная итерация быстрее другой.<br />
Самое интересное, что при очень большом количестве итераций (1 000 000 000), разница между различными методиками For, полностью исчезает.</p>
<p>Результаты теста при 1 000 000 000 итераций:</p>
<p>4103 ms<br />
5340 ms<br />
4087 ms<br />
4089 ms<br />
4090 ms<br />
4090 ms</p>
<p><a href="/f/testIter.swf" rel="shadowbox;height=280;width=350" title="Iterations Test">Смотреть в действии</a></p>
<p>P.S.<br />
Постарайтесь подобрать такое количество итераций, что бы время на тип итерации выходило в районе 500мс.<br />
На хорошем процессоре, это примерно 100 000 000 итераций.<br />
Так же нужно понимать, что самая медленная итерация, это когда в конструкции For, i и len имеют разные типы, к примеру int и uint, про Number вообще не стоит говорить.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/fastest-iteration/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 объектам. В последнем проекте необходимо было сделать куб как элемент навигации, при этом текстуры на гранях не должны были масштабироваться: 
PLAIN TEXT
Actionscript:




_camera.z = &#40;_camera.zoom - 1&#41; * _camera.focus + _cubeSide * 0.5; 






куб находится в нулевых координатах.


Если есть [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>
Papervision: При использовании 3Д на сайте, в 90% случаев необходимы 3D объекты в масштабе 1:1 к 2D объектам. В последнем проекте необходимо было сделать куб как элемент навигации, при этом текстуры на гранях не должны были масштабироваться: </p>
<div class="igBar"><span id="lactionscript-11"><a href="#" onclick="javascript:showPlainTxt('actionscript-11'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-11">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_camera.<span style="color: #006600;">z</span> = <span style="color: #66cc66;">&#40;</span>_camera.<span style="color: #006600;">zoom</span> - <span style="color: #cc66cc;color:#800000;">1</span><span style="color: #66cc66;">&#41;</span> * _camera.<span style="color: #006600;">focus</span> + _cubeSide * <span style="color: #cc66cc;color:#800000;">0</span>.<span style="color: #cc66cc;color:#800000;">5</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>
куб находится в нулевых координатах.
</li>
<li>
Если есть XML дерево, в котором, одно и тоже XML property может присутствовать не во всех элементах дерева. И при применении фильтра:</p>
<div class="igBar"><span id="lactionscript-12"><a href="#" onclick="javascript:showPlainTxt('actionscript-12'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-12">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">myXML..<span style="color: #006600;">item</span>.<span style="color: #66cc66;">&#40;</span>@id == someID<span style="color: #66cc66;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
вы получаете ReferenceError о том, что переменная @id не определена. Используйте другой фильтр:</p>
<div class="igBar"><span id="lactionscript-13"><a href="#" onclick="javascript:showPlainTxt('actionscript-13'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-13">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">myXML..<span style="color: #006600;">item</span>.<span style="color: #66cc66;">&#40;</span>attribute<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'id'</span><span style="color: #66cc66;">&#41;</span> == someID<span style="color: #66cc66;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
</li>
<li>
При разработке сайта, на котором будет функционал требующий работы с SharedObject, приходится поверять логику работы, когда человек впервые на сайте, и не только. Самый простой способ, это удалить файл .sol. Если вы думаете, что очистка кэша в браузере поможет вам, то вы ошибаетесь. Так же вы конечно можете сделать программную кнопку, при нажатии на которую, будет происходить удаление SharedObject. Но все же, пару раз удалить файл из системы, как по мне, проще. Более подробно, где их искать в различных системах, можно почитать в <a href="http://en.wikipedia.org/wiki/Local_Shared_Object">Wikipedia</a>
</li>
<li>
Timer отрабатывает не сразу после вызова метода start(), а лишь через значение delay, которое вы указали в конструкторе. Что бы заставить отработать сразу, правильнее всего сделать вот так:</p>
<div class="igBar"><span id="lactionscript-14"><a href="#" onclick="javascript:showPlainTxt('actionscript-14'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-14">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_someTimer.<span style="color: #006600;">dispatchEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> TimerEvent<span style="color: #66cc66;">&#40;</span>TimerEvent.<span style="color: #006600;">TIMER</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_someTimer.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<div class="igBar"><span id="lactionscript-15"><a href="#" onclick="javascript:showPlainTxt('actionscript-15'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-15">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">this</span>.<span style="color: #006600;">someTimerListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>
Вызвать сразу listener, плохо тем, что вы не сможете использовать updateAfterEvent
</li>
<li>
Маска с поддержкой прозрачности с помощью BlendMode. Хорошая вещь, как для программистов, когда требуется создать полупрозрачную маску, и при этом контент под маской анимируется, так и для аниматоров, так как не нужно никакого кода.<br />
Техника очень проста:<br />
есть контейнер в котором все объекты, маска и содержимое, которое нужно поместить под маску. Для этого контейнера устанавливаем BlendMode.LAYER.</p>
<div class="igBar"><span id="lactionscript-16"><a href="#" onclick="javascript:showPlainTxt('actionscript-16'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-16">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_container.<span style="color: #006600;">blendMode</span> = BlendMode.<span style="color: #006600;">LAYER</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>
Все размещается по слоям. Маска обязательно находится выше содержимого. Для маски устанавливаем BlendMode.ALPHA.</p>
<div class="igBar"><span id="lactionscript-17"><a href="#" onclick="javascript:showPlainTxt('actionscript-17'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-17">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_gradMask.<span style="color: #006600;">blendMode</span> = BlendMode.<span style="color: #006600;">ALPHA</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>
Если необходимо маскировать содержимое выходящее за пределы маски, создается еще одна маска, и уже привычным способом применяется к содержимому</p>
<div class="igBar"><span id="lactionscript-18"><a href="#" onclick="javascript:showPlainTxt('actionscript-18'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-18">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_content.<span style="color: #006600;">mask</span> = _mask; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>В итоге, все будет выглядеть где то так:</p>
<div class="igBar"><span id="lactionscript-19"><a href="#" onclick="javascript:showPlainTxt('actionscript-19'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-19">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_container.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>_content<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_container.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>_gradMask<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_container.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>_mask<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_gradMask.<span style="color: #006600;">mouseEnabled</span> = <span style="color: #000000; font-weight: bold;">false</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_gradMask.<span style="color: #006600;">blendMode</span> = BlendMode.<span style="color: #006600;">ALPHA</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_container.<span style="color: #006600;">blendMode</span> = BlendMode.<span style="color: #006600;">LAYER</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_content.<span style="color: #006600;">mask</span> = _mask; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>P.S.<br />
Более подробно для аниматоров. Создаем Movieclip, меняем ему BlendMode на Layer, помещаем в него 3 Movieclip'a: Нижний слой - Содержимое, Средний слой - маска, делаем ее маской для содержимого, Верхний слой - полупрозрачная маска, меняем ей BlendMode на Alpha (не нужно полупрозрачную маску совать под маску, или пытаться ее тоже сделать маской).</p>
<p>P.P.S.<br />
Если кто то всю жизнь пользовался только таким способом с помощью BlendMode, то для вас есть более простой способ, который отлично подходит для статического содержимого, к примеру текст.</p>
<div class="igBar"><span id="lactionscript-20"><a href="#" onclick="javascript:showPlainTxt('actionscript-20'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-20">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_mask.<span style="color: #006600;">cacheAsBitmap</span> = <span style="color: #000000; font-weight: bold;">true</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_content.<span style="color: #006600;">cacheAsBitmap</span> = <span style="color: #000000; font-weight: bold;">true</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_content.<span style="color: #006600;">mask</span> = _mask; </div>
</li>
</ol>
</div>
</div>
</div>
<p></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>Powered by Alternativa3D</title>
		<link>http://blog.nicolasprof.com/powered-by-alternativa3d</link>
		<comments>http://blog.nicolasprof.com/powered-by-alternativa3d#comments</comments>
		<pubDate>Thu, 02 Jul 2009 15:30:15 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Эксперименты]]></category>
		<category><![CDATA[Alternativa3D]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Away3D]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[Papervision]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Portfolio]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=292</guid>
		<description><![CDATA[Реализация моего портфолио прошла долгий и тернистый путь, от маленькой трешовой флешки с кровью и рваной бумагой с звуками из игры «Носферату», до достойного 3D приложения.
Первая 3D реализация использовала Papervision Great White Alpha, т.е. самая первая и сырая версия Papervision 2.0. Движек выдавал в среднем 24 fps на «игровом» компьютере. Следующая версия портфолио уже использовала [...]]]></description>
			<content:encoded><![CDATA[<p>Реализация моего портфолио прошла долгий и тернистый путь, от маленькой трешовой флешки с кровью и рваной бумагой с звуками из игры «Носферату», до достойного 3D приложения.<br />
Первая 3D реализация использовала Papervision Great White Alpha, т.е. самая первая и сырая версия Papervision 2.0. Движек выдавал в среднем 24 fps на «игровом» компьютере. Следующая версия портфолио уже использовала Away3D, интерактивность немножко прихрамывала, и API несильно отличалось, и все так же была возможность использовать Sprite материалы. Так же, кубики уже не вращались все время, а только когда пользователь использовал интерактивные возможности, т.е. сцена рендерилась при изменениях. FPS при рендеринге все так же «проседало».</p>
<p>И вот 4.0 версия портфолио, которая использует Alternativa3D. Вся навигация на сайте построена на мыши: левая, правая клавиши и колесико. Пропал МР3 плеер. На сайте два режима навигации, как вам идея? Почему не предоставить пользователю несколько режимов навигации, и пусть он выбирает более удобный для него. Так и появилась альтернативная навигация.<br />
Производительность у нового движка отличная. Разработчики создали свою отображаемую модель, начав все с нуля (Object3D extends Object). Все бы хорошо, но вот очень нехватает параметра alpha и visible. Так же есть некоторые косяки, после масштабирования объектов, иногда начинают появляться артефакты в виде дополнительных треугольников на поверхности. Так же есть баг с рендерингом текстуры: если объект масштабируется, при этом происходит анимация вершин, и все это происходит за видом камеры, то текстуры не обновляются, и имеем обычный белый объект. Из всех 3-ёх 3D движков, Alternativa3D имеет самый «приятный» API и самую высокую производительность. Если разработчики еще добавят возможность использования DisplayObjectContainer как текстуры, то это будет самый лучший движек для создания Pure 3D Flash сайтов.</p>
<p>P.S.<br />
Посвящается RSS Reader'ам.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/powered-by-alternativa3d/feed</wfw:commentRss>
		<slash:comments>1</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. Быстрое получение значения после запятой.
PLAIN TEXT
Actionscript:




public function getDecimal&#40;$value : Number&#41; : Number &#123;


&#160; &#160; return $value - &#40;$value&#62;&#62; 0&#41;;


&#125; 






2. Что бы не было проблем с получением DisplayObject'а после использования myMovieClipHolder.gotoAndStop(). Используйте Event.ENTER_FRAME, до того как событие отработает один раз. Использование MovieClip распространено в многоязычных версиях сайтов, сделав лэйблы: ru, en, ua.
PLAIN TEXT
Actionscript:




private function [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1.</strong> Быстрое получение значения после запятой.</p>
<div class="igBar"><span id="lactionscript-25"><a href="#" onclick="javascript:showPlainTxt('actionscript-25'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-25">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getDecimal<span style="color: #66cc66;">&#40;</span>$value : <span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">Number</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">return</span> $value - <span style="color: #66cc66;">&#40;</span>$value&gt;&gt; <span style="color: #cc66cc;color:#800000;">0</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p><strong>2.</strong> Что бы не было проблем с получением DisplayObject'а после использования myMovieClipHolder.gotoAndStop(). Используйте Event.ENTER_FRAME, до того как событие отработает один раз. Использование MovieClip распространено в многоязычных версиях сайтов, сделав лэйблы: ru, en, ua.</p>
<div class="igBar"><span id="lactionscript-26"><a href="#" onclick="javascript:showPlainTxt('actionscript-26'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-26">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onChangelanguage<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span> : Event<span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>_k&gt; <span style="color: #cc66cc;color:#800000;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>, onChangelanguage<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; registerMC<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; _k++;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p><strong>3.</strong> Являюсь ярым поклонником TweenLite разрабатываемого Jack Doyle. Не так давно, проект стал платформой для программной анимации, и легко расширяется плагинами. Я с вами поделюсь двумя плагинами, один из которых я использую в 40% всех программных анимаций - <a href="/downloads/AutoDeletePlugin.rar">AutoDeletePlugin</a>. <a href="/downloads/ShortRadianRotationPlugin.rar">ShortRadianRotationPlugin</a> - позволяет работать с радианами, как это сделано в Alternativa 3D. AutoDeletePlugin - применяется только для DisplayObject. По завершению анимации, больше не нужно использовать onComplete, что бы удалить DisplayObject.</p>
<p><strong>4.</strong> Быстрый и удобный, но не самый надежный способ убрать интерактивность с элементов интерфейса. Допустим есть некая форма, элементы которой содержатся в одном контейнере, пусть он будет называться formHolder. </p>
<div class="igBar"><span id="lactionscript-27"><a href="#" onclick="javascript:showPlainTxt('actionscript-27'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-27">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> toggleForm<span style="color: #66cc66;">&#40;</span>$state : <span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; formHolder.<span style="color: #006600;">mouseChildren</span> = $state;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
Главный минус такой реализации, что необходимо следить за теми элементами интерфейса, которые требуют игнорирования событий от мыши. К примеру лейблы на кнопках, если таких элементов нет, то можете использовать этот метод смело. Так же можно дать понять пользователю, что форма действительно неактивная, добавив одну строчку кода:</p>
<div class="igBar"><span id="lactionscript-28"><a href="#" onclick="javascript:showPlainTxt('actionscript-28'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-28">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> toggleForm<span style="color: #66cc66;">&#40;</span>$state : <span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; formHolder.<span style="color: #006600;">mouseChildren</span> = $state;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; formHolder.<span style="color: #006600;">alpha</span>= <span style="color: #66cc66;">&#40;</span>$state<span style="color: #66cc66;">&#41;</span> ? <span style="color: #cc66cc;color:#800000;">1</span> : <span style="color: #cc66cc;color:#800000;">0</span>.<span style="color: #cc66cc;color:#800000;">6</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></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>Необъятный Blur</title>
		<link>http://blog.nicolasprof.com/neobyatnyj-blur</link>
		<comments>http://blog.nicolasprof.com/neobyatnyj-blur#comments</comments>
		<pubDate>Fri, 12 Jun 2009 12:06:43 +0000</pubDate>
		<dc:creator>Nicolas Prof</dc:creator>
				<category><![CDATA[Эксперименты]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Bitmap]]></category>
		<category><![CDATA[Blur]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[trick]]></category>

		<guid isPermaLink="false">http://blog.nicolasprof.com/?p=252</guid>
		<description><![CDATA[Были ли у вас случаи, когда ограничения Flash не позволяли использовать фильтр?
Есть очень простой обходной путь. Если нам не разрешают применить фильтр к самому объекту, значит применим к его детям. Метод работает быстро, так как применение фильтра довольно таки быстрая операция. В этом можете убедиться в примере. Так же есть зависимость, что количество детей фильтруемого [...]]]></description>
			<content:encoded><![CDATA[<p>Были ли у вас случаи, когда ограничения Flash не позволяли использовать фильтр?<br />
Есть очень простой обходной путь. Если нам не разрешают применить фильтр к самому объекту, значит применим к его детям. Метод работает быстро, так как применение фильтра довольно таки быстрая операция. В этом можете убедиться в примере. Так же есть зависимость, что количество детей фильтруемого объекта прямо пропорционально кратности замедления процесса, т.е. если 100 детей, то время применения фильтра будет в 100 раз медленней. Вместо 10мс, будет 1сек при 10 000 итераций, согласитесь, что столько итераций в секунду в  работающем проекте невозможно, так что у нас в запасе хорошие резервы, и мы вполне вольны использовать такую технику с каким либо Tween движком.</p>
<p><a href="/f/demoBlur.swf" rel="shadowbox;height=300;width=500" title="Blur">Смотреть в действии</a></p>
<p>P.S.<br />
Кнопка Broke Holder, изменяет габариты спрайта на 5000 рх.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nicolasprof.com/neobyatnyj-blur/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
