<?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; Papervision</title>
	<atom:link href="http://blog.nicolasprof.com/tag/papervision/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>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>
	</channel>
</rss>
