<?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>Блог одиноко стоящего игрока вспышки &#187; AS2.0</title>
	<atom:link href="http://murejib.com/category/as20/feed/" rel="self" type="application/rss+xml" />
	<link>http://murejib.com</link>
	<description>flash, actionscript, animation, анимация</description>
	<lastBuildDate>Sat, 31 Mar 2012 12:15:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Анимация Stroke Line.</title>
		<link>http://murejib.com/2009/04/29/stroke-line-animation/</link>
		<comments>http://murejib.com/2009/04/29/stroke-line-animation/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 19:17:46 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[анимация]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[animator_at_work]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[туториал]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=176</guid>
		<description><![CDATA[Задача &#8211; надо анимировать линию, летящую по произвольному пути. )) Stroke эффект одним словом. Задача 2 &#8211; анимировать процесс рисования некоей произвольной фигуры. Если кому то много букв — смотрим видео версию. Если кому то жалко трафика — читаем ниже. Все может быть решено довольно просто. 1. Рисуем законченный путь нашей линии (кривая) 2. Дублируем [...]]]></description>
			<content:encoded><![CDATA[<p>Задача &#8211; надо анимировать линию, летящую по произвольному пути. )) Stroke эффект одним словом.<br />
Задача 2 &#8211; анимировать процесс рисования некоей произвольной фигуры.<br />
<span id="more-176"></span><br />
Если кому то много букв — смотрим видео версию.<br />
Если кому то жалко трафика — читаем ниже.<br />
<object width="444" height="360"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4399067&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=c9ff23&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4399067&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=c9ff23&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="444" height="360"></embed></object></p>
<p>Все может быть решено довольно просто.</p>
<p>1. Рисуем законченный путь нашей линии (кривая)<br />
<img src="http://murejib.com/flash/stroke/step1.jpg" alt="step1" /><br />
2. Дублируем кривую на новый слой.<br />
3. Создаем круглый шейп и конвертируем его в графический клип.<br />
4. Слой с дублем кривой превращаем в моушн-гайд для круглого шейпа.<br />
5. Делаем анимацию шейпа по всему пути.<br />
<img src="http://murejib.com/flash/stroke/step2.jpg" alt="step5" /><br />
6. Выделяем фреймы с моушнГайдом и шейпом, вырезаем их и создаем новый графический символ в билиотеке, куда и вставляем вырезанные фреймы. Или пользуемся необычайно полезной штукой Layers manager, который можно найти тут:  <a href="http://flash-animation.ru/category/plugins/">http://flash-animation.ru/category/plugins/</a> (Лерика, если ты это читаешь поправь линки! Прямая ссылка на пост о плагине не работает!!!)<br />
7. Временно переводим моушнГайд в обычный слой, чтобы видеть путь в клипе маски.<br />
8. Возвращаемся на сцену &#8211; совмещаем кривую и клип.<br />
<img src="http://murejib.com/flash/stroke/step3.jpg" alt="step8" /><br />
9. Возврашаемся в клип маски, и восстанавливаем моушнГайд для слоя с кривой.<br />
10. Слой с клипом, в котором находится анимация превращаем в маску для слоя с изначальной кривой. Ура.<br />
<img src="http://murejib.com/flash/stroke/step4.jpg" alt="step10" /><br />
Задача 2.<br />
1. Переводим клип с анимацией в ранг MovieClip. Дадим ему instance-имя masker.<br />
2. Обернем masker  в еще один мувиКлип с instance-name =  mask_mc<br />
3. Конвертируем кривую в мувиКлим с instance-name =  line_mc<br />
4. Пишем на таймлайне с линией и маской нехитрый код.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> mask_count:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">1</span>;
mask_mc.<span style="color: #006600;">masker</span>.<span style="color: #0066CC;">stop</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0066CC;">onEnterFrame</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> mc:<span style="color: #0066CC;">MovieClip</span> = mask_mc.<span style="color: #006600;">masker</span>.<span style="color: #0066CC;">duplicateMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;mask&quot;</span>+mask_count,mask_count<span style="color: #66cc66;">&#41;</span>;
	mc.<span style="color: #0066CC;">gotoAndStop</span><span style="color: #66cc66;">&#40;</span>mask_count<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>mask_count == mask_mc.<span style="color: #006600;">masker</span>.<span style="color: #0066CC;">_totalframes</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">delete</span> <span style="color: #0066CC;">onEnterFrame</span>;
	<span style="color: #66cc66;">&#125;</span>
	mask_count++;
<span style="color: #66cc66;">&#125;</span>
line_mc.<span style="color: #0066CC;">setMask</span><span style="color: #66cc66;">&#40;</span>mask_mc<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>5. Готово.</p>
<img src="http://murejib.com/?ak_action=api_record_view&id=176&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2009/04/29/stroke-line-animation/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Умные колеса.</title>
		<link>http://murejib.com/2009/04/24/smart-wheels/</link>
		<comments>http://murejib.com/2009/04/24/smart-wheels/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 19:09:57 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[анимация]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[useful]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=169</guid>
		<description><![CDATA[Сейчас я работаю над одним весьма интересным проектом — это будет всего лишь интерактивная  флеш-шапка, но она будет полна анимации с алогичным волшебством: кони-рыбы, люди-фрукты и так далее )) В процессе работы, я уверен, будет накапливатся масса интересных и полезных мелочей, коими я конечно же поспешу поделиться. Сейчас таких мелочей есть две: программный растеризатор сложного [...]]]></description>
			<content:encoded><![CDATA[<p>Сейчас я работаю над одним весьма интересным проектом — это будет всего лишь интерактивная  флеш-шапка, но она будет полна анимации с алогичным волшебством: кони-рыбы, люди-фрукты и так далее ))</p>
<p>В процессе работы, я уверен, будет накапливатся масса интересных и полезных мелочей, коими я конечно же поспешу поделиться. Сейчас таких мелочей есть две: программный растеризатор сложного вектора. Вектора будет много, и он как пить дать убъет процессор; пришлось выдумывать хитрые вещи. Но об этом позже, сначала я должен убедиться в эффективности выбранного решения ))</p>
<p>Сегодня же я расскажу о колесах. Будет скрипт )) Несложный, но он даст нам чудное колесо, и оно будет вращаться в точности в соответсвии с тем, как далеко продвигается то, к чему это колесо крепится ))) Итак, под кат, там есть небольшой мультик ))<br />
<span id="more-169"></span><br />
 </p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_horse_blog_1202854959"
			class="flashmovie"
			width="400"
			height="300">
	<param name="movie" value="http://murejib.com/flash/smartWheels/horse_blog.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://murejib.com/flash/smartWheels/horse_blog.swf"
			name="fm_horse_blog_1202854959"
			width="400"
			height="300">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Оставим пока лошадей ) (Я намерен, кстати выложить видео запись процесса работы над этой анимацией &#8211; так сказать серия Animator at work)<br />
Понаблюдайте за каретой. Колеса, как видите вращаются весьма правильно )) Они следуют всем законам земным и божеским. Вы думаете, я сидел с линейкой и мерял кадр за кадром &#8211; каково смещение? Нет. Я вспомнил, что в школе я неплохо разбирался в геометрии ))<br />
Итак, каждое колесо запаковано в мувиКлип, сама карета с ее вложенной анимацией также упакавана в мувиклип.<br />
Каждый клип колеса имеет точку регистрации ровно в его центре, чтобы колесо вращалось вокруг своей оси.<br />
Из геометрии мы знаем формулу длины окружности L = 2PI*R, где  R &#8211; радиус.<br />
В правильном колесе радиус &#8211; это половина ширины клипа.<br />
Рассуждаем логически: когда наше колесо повернется на 360 градусов, оно должно сместиться на расстояние  L. Супер! Значит, если колесо повернется на один градус, расстояние будет равно  L/360! Запомним это число,  и повесим на колесо событие onEnterFrame в котором смотрим — на сколько сместилась карета (моушвтины тоже считаются!), и считаем угол поворота &#8211; дистанцию делим на L/360. Вуаля.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">init<span style="color: #66cc66;">&#40;</span>wheel1<span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// обучаем первое колесо</span>
init<span style="color: #66cc66;">&#40;</span>wheel2<span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// обучаем второе колесо</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span>mc:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>
<span style="color: #66cc66;">&#123;</span>
	mc.<span style="color: #006600;">radius</span> = mc.<span style="color: #0066CC;">_width</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span>; <span style="color: #808080; font-style: italic;">// собрали радиус</span>
	mc.<span style="color: #006600;">baseX</span> = mc.<span style="color: #0066CC;">_parent</span>.<span style="color: #0066CC;">_x</span>; <span style="color: #808080; font-style: italic;">// запомнили начальную позицию кареты</span>
	<span style="color: #808080; font-style: italic;">// l = 2PI*R - ах, геометрия...</span>
&nbsp;
	mc.<span style="color: #006600;">degreeLength</span>  = <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">*</span><span style="color: #cc66cc;">3.1415926</span><span style="color: #66cc66;">*</span>mc.<span style="color: #006600;">radius</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">360</span>; <span style="color: #808080; font-style: italic;">// смещение при повороте на один градус</span>
	mc.<span style="color: #0066CC;">onEnterFrame</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> distance:<span style="color: #0066CC;">Number</span> = <span style="color: #0066CC;">this</span>.<span style="color: #006600;">baseX</span> - <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">_parent</span>.<span style="color: #0066CC;">_x</span>; <span style="color: #808080; font-style: italic;">// на сколько сместилась карета?</span>
		<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">_rotation</span> = -distance<span style="color: #66cc66;">/</span><span style="color: #0066CC;">this</span>.<span style="color: #006600;">degreeLength</span>; <span style="color: #808080; font-style: italic;">// поворачиваем колесо</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<img src="http://murejib.com/?ak_action=api_record_view&id=169&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2009/04/24/smart-wheels/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Разбираемся с SWFAddress</title>
		<link>http://murejib.com/2008/02/26/swfaddress/</link>
		<comments>http://murejib.com/2008/02/26/swfaddress/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 11:37:03 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[грабли]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[deep linking]]></category>
		<category><![CDATA[swfaddress]]></category>
		<category><![CDATA[traps]]></category>
		<category><![CDATA[utils]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=41</guid>
		<description><![CDATA[В сети море полезных фреймворков, классов и решений различных задач. Однако очень многие из них имеют существенный недостаток &#8211; УЖАСНАЯ, если вообще присутствующая документация. Недавно я прикоснулся к магии SWFAddress, библиотеке AS+JS, решающей проблему deep linking для FLASH и AJAX. Для таких как я (гуманитариев и не-программистов) предлагаю свой опыт по освоению СВФАдреса. Нет. Документацию [...]]]></description>
			<content:encoded><![CDATA[<p>В сети море полезных фреймворков, классов и решений различных задач.<br />
Однако очень многие из них имеют существенный недостаток &#8211; УЖАСНАЯ, если вообще присутствующая документация.</p>
<p>Недавно я прикоснулся к магии SWFAddress, библиотеке AS+JS, решающей проблему deep linking для FLASH и AJAX.<br />
Для таких как я (гуманитариев и не-программистов) предлагаю свой опыт по освоению СВФАдреса.<br />
<span id="more-36"></span> Нет. Документацию на русский язык я переводить не буду. Не вижу в этом смысла. Документация более чем минималистическая. С тем же успехом ее можно было бы вообще не писать. В прочем + от нее все же есть &#8211; сводная таблица всех доступных в классе методов.</p>
<p>Первое что следует сделать &#8211; это скачать библиотеку. Настоятельно рекомендую качать <a href="http://asual.com/download/?swfaddress">7-мегабайтовый архив</a> с примерами и документацией.  Потому что, как выяснилось в процессе, если бы я ограничился скачиванием только классов — меня бы постигла неудача, и я бы так и не понял в чем дело. А непоняток-ошибок на пути встретилось некоторое количество )</p>
<p><strong>Первая ошибка.</strong> Исторически сложилось так, что я работал над сайтом, к которому намеревался прикрутить SWFAddress на завершающем этапе.  <em>Собираетесь использовать дип линкинг &#8211; сразу работайте с SWFAddress</em>. Дело в том, что любое изменение адресной строки браузера (А это именно то, зачем нам вообще нужен дип линкинг) вызывает событие SWFAddress.onChange. То есть фактически и переключение разделов из флеш сайта (конечно если оно должно вести к изменению в адресной строке) , и переключение разделов извне (навигация по кнопкам ВПЕРЕД НАЗАД ,навигация по якорям на хтмл-странице и т.д.) вызывает это событие. В сущности на нем как раз и будет строиться обработка события переключения между разделами.<br />
<strong>Ошибка вторая.</strong> Я доверился заявлению <em>Flash CS3 Support</em>. Фактически же, если публиковать ролик на странице с помощью AC_RunActiveContent.js, которое генерируется Flash IDE &#8211; дип линкинг не работает. Изменения в адресной строке &#8211; да, но ролик не реагирует на навигацию из браузера. Я дошел до этого знания случайно. Потеряв веру в свой мозг, я просто взял рабочий пример, и заменил в нем флешку на свою &#8211; и все заработало. Путем исключений я нашел камень преткновения. Каким то образом AC_RunActiveContent.js из примера отличается от того, что генерируется FLASH CS3 IDE. Так что пользуйтесь скриптом из примеров. Что касается работы с SWFObject и UFO &#8211; не проверял. У вас есть отличная возможность сделать это за меня, а потом отписаться здесь, если пожелаете.</p>
<p>Теперь о некоторых тонкостях и внутренностях. В архиве есть коды для всех трех версий AS. Мои опыты ставились на AS2.0</p>
<p>1. Класс написан как TopLevel-класс, или для тех кто не понимает этого словосочетания, &#8211; он не создает экземпляров. Пример такого класса -Math, все функции в нем вызываются подобным образом: Math.sin(), Math.round() и т.д. То же справедливо и для SWFAddress.</p>
<p>2. Адресная строка.<br />
Для решения задачи дип линкинга, к существующему URL добавляется якорь # за которым следует строка, которую разработчик волен генерить сам, по своим правилам, и сам же по своим правилам ее  и разбирает. Есть два режима. setStrict(true) &#8211; в конце адреса жестко добавляется слеш (/) и setStrict(false) &#8211; никаких слешей без ведома разрабочика.</p>
<p>3. Основные полезные методы.<br />
В классе присутствует набор методов для разбора строки. Весьма удобно.<br />
К примеру в адресной строке имеем</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://flashsite.com/#news?page=&amp;img=2</pre></div></div>

<p><strong>SWFAddress.getValue():String -</strong> вернет значение строки аккурат после # со всеми Вашими изысками (парами имя=значение)</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">news?page=1&amp;img=2</pre></div></div>

<p><strong>SWFAddress.getPath():String -</strong> вернет значение строки аккурат после # без дополнительных параметров<br />
<em>news</em></p>
<p><strong>SWFAddress.getQueryString():Array -</strong> вернет строку с дополнительными параметрами</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">page=1&amp;img=2</pre></div></div>

<p><strong>SWFAddress.getParameterNames():Array -</strong> вернет массив с именами дополнительных переменных<br />
<em>page,img</em></p>
<p><strong>SWFAddress.getParameter(value:String):String -</strong> вернет значение дополнительного параметра указанного в value<br />
<em>getParameter(&#8220;page&#8221;) // 1;<br />
</em><em>getParameter(&#8220;img&#8221;) // 2;<br />
</em></p>
<p>Для того чтобы изменить адресную строку из FLASH существует метод <strong>setValue(value:String) &#8211; </strong>помните, что вызов этого метода автоматически приведет к вызову события onChange, так что фактически переключение между разделами сводится к замене значения адресной строки и последующей обработке события.</p>
<p>Остальные методы описывать не стану, они весьма просты и даже данных документации хватит для их освоения.</p>
<p>4. События.<br />
Я уже говорил о событии onChange. Должен отметить, что событие это вызывается сразу же, при первом же упоминании класса, равно как и событие onInit. Большого смысла в событии onInit я не уловил. В самом начале оно вызывается и тут же за ним вызывается onChange. Возможно есть смысл для более четкой структуризации, и отделении инит-процедур от собственно обработки переключений между разделами.</p>
<p>Более подробно поговрим о событии onChange, хотя в случае с onInit все работает абсолютно так же, за исключением значения cвойств SWFAddressEvent: path=null; value=null; type=init;</p>
<p>События доступны в двух ипостасях:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">SWFAddress.<span style="color: #006600;">onChange</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SWFAddress.onChange&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>В данном случае мы просто определяем статичную функцию onChange.</p>
<p>Второй вариант &#8211; подписать любой свой объект на событие. Во многом это удобнее, чем описывать вложенные функции с обработчиком события.<br />
К примеру мне удобно подписать экземпляр класса, который напрямую работает с SWFAddress. Для этого я сначала создаю функцию обработчик:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> onChange<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> \
<span style="color: #66cc66;">&#123;</span>
   <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Class's onChange&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>И далее подписывась на событие с помощью метода класса  SWFAddress  &#8211; addEventListener(type:String,listener:Function);<br />
Поскольку в этом учавствует стандартный mx.utils.EventDispatcher, нужно подписаться так, чтобы наша функция onChange знала кто в доме хозяин &#8211; то есть надо жестко определить this. Делается это при помощи mx.utils.Delegate.create().<br />
Итак подписка на событие для нашего экземпляра будет выглядеть так</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">SWFAddress.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;change&quot;</span>,Delegate.<span style="color: #006600;">create</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>,onChange<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Теперь мы можем из тела функции onChange обращаться ко всем свойствам и методам нашего экземпляра. Ура.<br />
Продвинемся дальше. В том случае, если мы подписываемся на событие, в качестве параметра в наш обработчик приходит экземпляр SWFAddressEvent, который несет в себе ценную информацию <img src='http://murejib.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Модифицируем наш обработчик.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> onChange<span style="color: #66cc66;">&#40;</span>evt:SWFAddressEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>
<span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">//вернет путь после # из адресной строки БЕЗ параметров</span>
  <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;path:&quot;</span>+evt.<span style="color: #006600;">path</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #808080; font-style: italic;">//вернет  путь после # из адресной строки С параметрами</span>
  <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;value:&quot;</span>+evt.<span style="color: #006600;">value</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Также событие несет информацию о своем типе (type=&#8221;change&#8221; или &#8220;init&#8221;), target (это всегда отсылка на SWFAddress) а также массив parameters (&#8220;ассоциативный&#8221;)   с параметрами из queryString. Если в адресной строке есть news?param=value, то значение param можно получить так : SWFAddressEvent.parameters.param</p>
<p>Какие замечены баги.</p>
<p>1. Самый неприятный. В опере любое переключение между страницами ИЗ браузера (навигация вперед назад, якоря) вызывает полную перезагрузку страницы. Не очень то красиво, особенно если это флеш сайт с какими то особенными переходами между страницами. К счастью внутренние флешовые переходы проходят как обычно.</p>
<p>2.Если вручную вставить адрес в браузерной строке в FireFox &#8211; адресная строка перестает изменяться, когда переключаешься между разделами. Вроде как адреса заносятся в history, навигация вперед.назад работает,  но это не отображается в адресной строке. В принципе &#8211; я лично замечал вообще странное поведение адресной строки в Фоксе, и без дип линкинга, например иногда в ней просто невозможно перенабрать адрес.</p>
<p>Работоспособность проверена на:</p>
<ul>
<li>Mozzilla FireFox 2.0.0.12</li>
<li>Opera 9.10</li>
<li>IE 6.0</li>
<li>Safari (win) 3.0.3</li>
</ul>
<p>В завершении могу только дать ссылку на первый свой опыт с SWFAddress, где вы можете потестировать работоспособность библиотеки в разных браузерах. Будет полезно, если здесь вы запостите свои баг репорты, ну или зададите вопросы о том, что осталось непонятным. Цель этого топика &#8211; сделать эту бесспорно полезную опцию более доступной всем категориям разработчиков )) Поэтому -включайтесь )</p>
<p><a href="http://kvadra.net/samples/goodpeople/_flash/#chillout/two?pgid=2t&#038;imgid=36">http://kvadra.net/samples/goodpeople/_flash/#chillout/two?pgid=2t&#038;imgid=36 </a></p>
<img src="http://murejib.com/?ak_action=api_record_view&id=36&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2008/02/26/swfaddress/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>_quality = LOW. Производительность против дизайна.</title>
		<link>http://murejib.com/2008/02/06/_quality-low/</link>
		<comments>http://murejib.com/2008/02/06/_quality-low/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 15:02:38 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[NB]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=39</guid>
		<description><![CDATA[Самое мое любимое качество &#8211; LOW. Очень быстро, но смертельно для вектора. В некоторых случаях, можно с легкостью пользоваться этим чудным режимом, оставляя за собой право на гладкие линии)) Рецепт прост. Если мы имеем дело со статичным вектором, то мы можем сделать с него слепок в битмапДату при режиме _quality=&#8221;HIGH&#8221;, а затем переключиться на LOW [...]]]></description>
			<content:encoded><![CDATA[<p>Самое мое любимое качество &#8211; LOW. Очень быстро, но смертельно для вектора.</p>
<p>В некоторых случаях, можно с легкостью пользоваться этим чудным режимом, оставляя за собой право на гладкие линии))<br />
Рецепт прост. Если мы имеем дело со статичным вектором, то мы можем сделать с него слепок в битмапДату при режиме _quality=&#8221;HIGH&#8221;, а затем переключиться на LOW и вывести уже не вектор, а битмапДату. Просто до безобразия.<span id="more-35"></span></p>
<p>Более того, замечено, что текст с типом рендеринга ADVANCED &#8211; не подвластен козням качества LOW.<br />
ПРи должной сноровке, несложно написать класс, который переводил бы нужный вектор в битмап дату.  МОжно даже продумать подобные фокус с анимированными векторами (массив фрейм_в_битмап) Конечно в данном случае больше нагрузки идет на ОЗУ, но в основом именно нагрузка на CPU дает притормаживание.</p>
<p>Пример:</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_qbmp_442738881"
			class="flashmovie"
			width="450"
			height="200">
	<param name="movie" value="/flash/quality/qbmp.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/flash/quality/qbmp.swf"
			name="fm_qbmp_442738881"
			width="450"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Код фокуса:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">BitmapData</span>;
<span style="color: #0066CC;">_quality</span>=<span style="color: #ff0000;">&quot;BEST&quot;</span>;
<span style="color: #000000; font-weight: bold;">var</span> bmp:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> BitmapData<span style="color: #66cc66;">&#40;</span>oval.<span style="color: #0066CC;">_width</span>,oval.<span style="color: #0066CC;">_height</span>,<span style="color: #000000; font-weight: bold;">true</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
bmp.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span>oval<span style="color: #66cc66;">&#41;</span>;
<span style="color: #0066CC;">_quality</span> = <span style="color: #ff0000;">&quot;LOW&quot;</span>;
<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;mc&quot;</span>,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
mc.<span style="color: #0066CC;">_x</span> = oval.<span style="color: #0066CC;">_width</span><span style="color: #66cc66;">*</span><span style="color: #cc66cc;">2</span>;
mc.<span style="color: #0066CC;">_y</span> = oval.<span style="color: #0066CC;">_y</span>;
mc.<span style="color: #006600;">attachBitmap</span><span style="color: #66cc66;">&#40;</span>bmp,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Ссылка по теме: <a href="http://www.bytearray.org/?p=117">http://www.bytearray.org/?p=117</a></p>
<img src="http://murejib.com/?ak_action=api_record_view&id=35&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2008/02/06/_quality-low/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BitmapData + mask = мертвый браузер.</title>
		<link>http://murejib.com/2008/02/05/bitmapdata-mask/</link>
		<comments>http://murejib.com/2008/02/05/bitmapdata-mask/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 14:27:11 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[баг]]></category>
		<category><![CDATA[грабли]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[NB]]></category>
		<category><![CDATA[traps]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=38</guid>
		<description><![CDATA[Очередной баг браузерного плагина и как с ним бороться ) Некоторые нехитрые действия для создания битмап-картинки, маскированной фигурным контуром вырубили напрочь браузер. Коротко об алгоритме: 1.В библиотеке есть клип для маски (дабы прямоугольный кусок растра оформить в &#8220;фигурный&#8221; контур). 2. Там же, в библотеке, несколько растров с linkageID. 3. Создается временный клип, аттачится маска, временный [...]]]></description>
			<content:encoded><![CDATA[<p>Очередной баг браузерного плагина и как с ним бороться )<br />
Некоторые нехитрые действия для создания битмап-картинки, маскированной фигурным контуром вырубили напрочь браузер.</p>
<p><span id="more-34"></span></p>
<p>Коротко об алгоритме:</p>
<p>1.В библиотеке есть клип для маски (дабы прямоугольный кусок растра оформить в &#8220;фигурный&#8221; контур).<br />
2. Там же, в библотеке, несколько растров с linkageID.<br />
3. Создается временный клип, аттачится маска, временный клип маскируется.<br />
4. Создается временная битмапДата, аттачится во временный клип (Под маско получается картинка &#8220;в рамке&#8221;)<br />
5. Создаем еще одну битмап дату, делаем слепок с маскированного клипа.<br />
6. Заносим полученную битмапу в массив, для дальнейшего использования.<br />
7. Убираем временные клипы, диспоузим временный битмап.</p>
<p>При этих нехитрых действиях, дебаг, стендалон &#8211; работаю как и предполагается.<br />
Браузер (любой) вылетает, сообщив о б ошибке.</p>
<p>Опытным путем, установил, что проблема в маске. И это же навело меня на решение.<br />
Перед тем , как задать маску, нужно и маскируемому, и маскиующему  клипам задать свойство cacheAsBitmap = true. И хотя особоенно логичного объяснения я этому не вижу &#8211; плагин принимает такой вариант.</p>
<img src="http://murejib.com/?ak_action=api_record_view&id=34&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2008/02/05/bitmapdata-mask/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Новое в классе FileReference</title>
		<link>http://murejib.com/2008/01/29/novoe-v-klasse-filereference/</link>
		<comments>http://murejib.com/2008/01/29/novoe-v-klasse-filereference/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 07:29:44 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=36</guid>
		<description><![CDATA[Недавно в блоге GarbageCollector появилась статья о новых событиях класса NetStream. Я в свою очередь ) недавно обнаружил некоторые нововведения и в классе FileReference, впервые появившемся в Macromedia Flash 8. Когда я впервые стал смотреть на возможности этого класса, меня разочаровало то, что на сервер вместе с загружаемым файлом можно отправить данные только GET-методом. (Классический [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно в  <a href="http://yarovoy.com/">блоге GarbageCollector</a> появилась<a href="http://yarovoy.com/2008/01/25/new_events_in_netstream/"> статья о новых событиях класса NetStream</a>.</p>
<p>Я в свою очередь ) недавно обнаружил некоторые нововведения и в классе FileReference, впервые появившемся в Macromedia Flash 8.</p>
<p><span id="more-32"></span><br />
Когда я впервые  стал смотреть на возможности этого класса, меня разочаровало то, что на сервер вместе с загружаемым файлом можно отправить данные только GET-методом. (Классический урл-запрос с парами <em>переменная=значение</em>). Также нельзя было получить от сервера никаких данных, по завершении загрузки.</p>
<p>Недавно вновь обратился к этому классу, но уже в Adobe Flash CS3 &#8211; и, о чудо! Новые свойства и события, как раз на эту тему.</p>
<p>Новое свойство postData:String. &#8211; Как видно из названия (опыты подтверждают) &#8211; POST параметры, которые отправляются на сервер вместе с загружаемым файлом.<br />
Польза? Как минимум отправка сложной формы, включающей некий файл (картинку, звук, архив)  на сервер. Данные формируются строкой из все тех же пар <em>переменная=значение. </em></p>
<p>Новое событие:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">onUploadCompleteData  =  <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span>fileRef:FileReference, <span style="color: #0066CC;">data</span>:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span>;</pre></td></tr></table></div>

<p>Как видно из конструкции &#8211; по завершению аплоада, если сервер отдает какие то данные в ответ, то мы можем их получить в переменной data:String. Очень удобно хотя бы для того, чтобы сообщить пользователю, что его драгоценные данные отправлены и приняты.</p>
<p>Вот такие бонусы. Добавлю только, что все это работает в плеере 9.0.r28 и выше.</p>
<img src="http://murejib.com/?ak_action=api_record_view&id=32&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2008/01/29/novoe-v-klasse-filereference/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Первая помощь флешовому HTML Render-у</title>
		<link>http://murejib.com/2008/01/28/pervaya-pomoshh-fleshovomu-html-render-u/</link>
		<comments>http://murejib.com/2008/01/28/pervaya-pomoshh-fleshovomu-html-render-u/#comments</comments>
		<pubDate>Mon, 28 Jan 2008 10:44:05 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[TextField]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=35</guid>
		<description><![CDATA[Форматирование текста с помощью HTML во флеш,что ни говори &#8211; гораздо удобнее, чем форматирование с TextFormat, практически в любой ситуации. Если Вас сильно огорчает сильно урезанный набор тегов, который HTML парсер флеша понимает &#8211; читайте дальше. Итак, что мы имеем в распоряжении: P, B, I, U, A, BR, LI, I, IMG, SPAN, TEXTFORMAT, FONT. Как [...]]]></description>
			<content:encoded><![CDATA[<p>Форматирование текста с помощью HTML во флеш,что ни говори &#8211; гораздо удобнее, чем форматирование с TextFormat, практически в любой ситуации.</p>
<p>Если Вас сильно огорчает сильно урезанный набор тегов, который HTML парсер флеша понимает &#8211; читайте дальше.</p>
<p><span id="more-31"></span> Итак, что мы имеем в распоряжении:<br />
P, B, I, U, A, BR, LI, I, IMG, SPAN, TEXTFORMAT, FONT.</p>
<p>Как видим &#8211; ни хедеров, ни STRONG, который рекомендуется вместо B. Заставить флеш-хтмл-парсер понимать h1, h2&#8230;. strong, em не прибегая к хакам &#8211; елементарно.<br />
У нас же есть законный TextField.StyleSheet. А с помощью css можно форматировать любой XML документ. Грамотный HTML &#8211; это тот же XML, поэтому нам достаточно описать в каком виде мы хотим видеть наши заголовки, описать strong, em &#8211; и все что нам нужно в таблице стилей.</p>
<p>Маленькая странность &#8211; любой неподдерживаемый тег, описанный в таблице стилей &#8211; разрывает строку. В случае заголовоков это даже полезно, а вот strong, разрывающий пасть строке &#8211; это экзотика  К счастью флеш поддерживает свойство display.  Так что display: inline &#8211; поставит все на свои места.</p>
<p>Дружите с цсс+хтмл. Великий поклон разработчикам за то, что они избавили меня лично от необходимости повсеместно пользоваться текстФорматом. Даже за такой куцый парсер хтмл.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// стиль</span>
<span style="color: #000000; font-weight: bold;">var</span> style_string:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;h1 {font-size: 20; font-weight: bold} &quot;</span>;
style_string += <span style="color: #ff0000;">&quot;strong {font-weight: bold; display: inline;}&quot;</span>;
<span style="color: #000000; font-weight: bold;">var</span> style_css:<span style="color: #0066CC;">TextField</span>.<span style="color: #006600;">StyleSheet</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">TextField</span>.<span style="color: #006600;">StyleSheet</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
style_css.<span style="color: #0066CC;">parseCSS</span><span style="color: #66cc66;">&#40;</span>style_string<span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// текст</span>
<span style="color: #000000; font-weight: bold;">var</span> html_text:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;
&lt;/code&gt;
&lt;h1&gt;Нeader&lt;/h1&gt;
&quot;</span>;
html_text +=<span style="color: #ff0000;">&quot;&lt;strong&gt; Very strong line &lt;/strong&gt;&quot;</span>;
html_text +=<span style="color: #ff0000;">&quot;usual text&quot;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// текстовое поле</span>
<span style="color: #000000; font-weight: bold;">var</span> tf:<span style="color: #0066CC;">TextField</span> = <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">createTextField</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;tf&quot;</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">400</span>,<span style="color: #cc66cc;">200</span><span style="color: #66cc66;">&#41;</span>;
tf.<span style="color: #0066CC;">multiline</span> = <span style="color: #000000; font-weight: bold;">true</span>;
tf.<span style="color: #0066CC;">wordWrap</span> = <span style="color: #000000; font-weight: bold;">true</span>;
tf.<span style="color: #0066CC;">border</span> = <span style="color: #000000; font-weight: bold;">true</span>;
tf.<span style="color: #0066CC;">html</span> = <span style="color: #000000; font-weight: bold;">true</span>;
tf.<span style="color: #0066CC;">condenseWhite</span> = <span style="color: #000000; font-weight: bold;">true</span>;
tf.<span style="color: #006600;">styleSheet</span> = style_css;
tf.<span style="color: #0066CC;">htmlText</span> = html_text;</pre></td></tr></table></div>

<p>Ну, а если требуется что-то более продвинутое &#8211; посмотрите на компонент HTMLRenderer Андрея Горбатова: <a href="http://gorbatov.blogspot.com/2007/04/htmlrenderer-htmltext.html">http://gorbatov.blogspot.com/&#8230;/htmlrenderer</a></p>
<img src="http://murejib.com/?ak_action=api_record_view&id=31&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2008/01/28/pervaya-pomoshh-fleshovomu-html-render-u/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Прелоадер для &#8216;img&#8217;</title>
		<link>http://murejib.com/2007/12/11/img-preloader/</link>
		<comments>http://murejib.com/2007/12/11/img-preloader/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 11:17:27 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[TextField]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=24</guid>
		<description><![CDATA[TextField &#8211; субстанция крайне интересная, взбаломошная и мистическая. Обуздание оной подчас превращается в подвиг Геракла. Несколько статей о TеxtField я обязательно размещу на страницах этого блога. Многие знают, что в текстовое поле с подключенным html можно грузить картинки и флешки, а также вставлять символы из библиотеки. Но вот вопрос &#8211; а можно ли взаимодействовать с [...]]]></description>
			<content:encoded><![CDATA[<p>TextField &#8211; субстанция крайне интересная, взбаломошная и мистическая.<br />
Обуздание оной подчас  превращается в подвиг Геракла.<br />
Несколько статей о TеxtField я обязательно размещу на страницах этого блога.</p>
<p>Многие знают, что в текстовое поле с подключенным html можно грузить картинки и флешки, а также вставлять символы из библиотеки.<br />
Но вот вопрос &#8211; а можно ли взаимодействовать с этими объектами? Например возможен ли прелоадер?<br />
<span id="more-22"></span><br />
ДА и очень просто. Фактически тег &lt;IMG&gt; создает внутри тексатового поля новый MovieClip. Если в html-коде прописан id для IMG, то будет создан клип именно с таким instance name. И обращаться к этому клипу можно через текстовое поле. К примеру если в текстовое поле my_txt внедряется картинка</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;img id=&quot;img&quot; src=&quot;http://yoursite.com/images/someIMG.pg&quot; alt=&quot;&quot; /&gt;</pre></div></div>

<p>То мы можем обратиться к ней my_txt.img</p>
<p>Но что если у нас есть  html-текст с img без id, и таких картинок много,  а нам необходимо сделать скроллер для текстового поля. Пока картинки не загружены мы с большой долей вероятности получим неверную высоту поля.<br />
Есть простой способ &#8211; нам нужно просто завести массив для учета встроенных картинок</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> htmlIMG:<span style="color: #0066CC;">Array</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>;</pre></div></div>

<p>И пройтись по текстовому полю циклом for&#8230;in, помня, что картинки &#8211; это объекты типа MovieClip.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> mc <span style="color: #b1b100;">in</span> my_txt<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#123;</span>
     <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">typeof</span><span style="color: #66cc66;">&#40;</span>my_txt<span style="color: #66cc66;">&#91;</span>mc<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> == <span style="color: #ff0000;">&quot;movieclip&quot;</span><span style="color: #66cc66;">&#41;</span>
     <span style="color: #66cc66;">&#123;</span>
         <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;found IMG: &quot;</span>+my_txt<span style="color: #66cc66;">&#91;</span>mc<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
         htmlIMG.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>my_txt<span style="color: #66cc66;">&#91;</span>mc<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
     <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Теперь у нас есть массив, в которые занесены ссылки на все клипы.<br />
А дальше &#8211; прелоадер должен собрать все загруженные байты этих клипов и все тотальные байты этих же клипов. Суммируем, делим, получаем процент. По завершению загрузки &#8211; проверяем высоту поля, и приделываем наш бесценный скроллер.</p>
<img src="http://murejib.com/?ak_action=api_record_view&id=22&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2007/12/11/img-preloader/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ScrollRect vs setMask</title>
		<link>http://murejib.com/2007/12/09/scrollrect-vs-setmask/</link>
		<comments>http://murejib.com/2007/12/09/scrollrect-vs-setmask/#comments</comments>
		<pubDate>Sun, 09 Dec 2007 15:39:32 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[NB]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=23</guid>
		<description><![CDATA[На заметку. Если нужно применить к клипу прямоугольную маску, вместо MovieClip.setMask(mc:MovieClip) лучше воспользоваться свойством scrollRect (доступно от 8-й версии и выше). Плюс в производительности на лицо. Более того &#8211; под такой &#8220;маской&#8221; не пропадают системные и не-внедренные шрифты. Использование предельно просто: 1 2 3 import flash.geom.Rectangle; var maskRect:Rectangle = new Rectangle&#40;x,y,width,height&#41;; my_mc.scrollRect = maskRect; С [...]]]></description>
			<content:encoded><![CDATA[<p>На заметку.</p>
<p>Если нужно применить к клипу прямоугольную маску, вместо MovieClip.setMask(mc:MovieClip) лучше воспользоваться свойством scrollRect (доступно от 8-й версии и выше).</p>
<p>Плюс в производительности на лицо. Более того &#8211; под такой &#8220;маской&#8221; не пропадают системные и не-внедренные шрифты.</p>
<p>Использование предельно просто:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">geom</span>.<span style="color: #006600;">Rectangle</span>;
<span style="color: #000000; font-weight: bold;">var</span> maskRect:Rectangle = <span style="color: #000000; font-weight: bold;">new</span> Rectangle<span style="color: #66cc66;">&#40;</span>x,y,<span style="color: #0066CC;">width</span>,<span style="color: #0066CC;">height</span><span style="color: #66cc66;">&#41;</span>;
my_mc.<span style="color: #006600;">scrollRect</span> = maskRect;</pre></td></tr></table></div>

<p>С такой &#8220;маской&#8221; удобно делать также и скроллеры (собственно название выдает).<br />
Достаточно поменять значение x, y для Rectangle, и визуально мы видим смещение контента мувиКлипа.</p>
<img src="http://murejib.com/?ak_action=api_record_view&id=21&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2007/12/09/scrollrect-vs-setmask/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>SmartFont</title>
		<link>http://murejib.com/2007/12/06/smartfont/</link>
		<comments>http://murejib.com/2007/12/06/smartfont/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 12:50:16 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=12</guid>
		<description><![CDATA[Над проблемой загрузки внешних библиотек шрифтов не трудился, наверное, только ленивый. Вариантов решения проблемы много. Коммерческие, не коммерческие, рабочие, не рабочие, удобные и неудобные. Вашему вниманию мой класс SmartFont. На сайте поддержки описаны все телодвижения, здесь же упомяну только общий ход использования: 1 2 3 4 5 6 var my_font:SmartFont = new SmartFont&#40;&#41;; my_font.load&#40;&#34;someFont.swf&#34;&#41;; my_font.onLoad [...]]]></description>
			<content:encoded><![CDATA[<p>Над проблемой загрузки внешних библиотек шрифтов не трудился, наверное, только ленивый.</p>
<p>Вариантов решения проблемы много. Коммерческие, не коммерческие, рабочие, не рабочие, удобные и неудобные.</p>
<p>Вашему вниманию мой  класс <a href="http://murejib.com/smartfont/">SmartFont</a>.<br />
На сайте поддержки описаны все телодвижения, здесь же упомяну только общий ход использования:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> my_font:SmartFont = <span style="color: #000000; font-weight: bold;">new</span> SmartFont<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
my_font.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;someFont.swf&quot;</span><span style="color: #66cc66;">&#41;</span>;
my_font.<span style="color: #0066CC;">onLoad</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>
    <span style="color: #66cc66;">&#123;</span>
     <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Шрифт: &quot;</span>+<span style="color: #0066CC;">this</span>._font+<span style="color: #ff0000;">&quot; готов к использованию&quot;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<img src="http://murejib.com/?ak_action=api_record_view&id=13&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2007/12/06/smartfont/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

