<?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; traps</title>
	<atom:link href="http://murejib.com/tag/traps/feed/" rel="self" type="application/rss+xml" />
	<link>http://murejib.com</link>
	<description>flash, actionscript, animation, анимация</description>
	<lastBuildDate>Sat, 10 Dec 2011 07:58:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>FireFox. FlashTracer. FlashPlayer9 debug</title>
		<link>http://murejib.com/2008/04/10/firefox-flashtracer-flashplayer9-debug/</link>
		<comments>http://murejib.com/2008/04/10/firefox-flashtracer-flashplayer9-debug/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 09:09:39 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[баг]]></category>
		<category><![CDATA[грабли]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[NB]]></category>
		<category><![CDATA[traps]]></category>
		<category><![CDATA[utils]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=44</guid>
		<description><![CDATA[Давно не писал, ибо пребываю сейчас в экстремальном непроходящем дебаге )) О нем и будет короткая моя речь )) Недавно вышла новая весрия флеш плеера, о чем было уже писано переписано, все дружно обновились, я полагаю ). В куче мы могли также качать дебаг-версию. И тут я вспомнил, что FlashTracer &#8211; милый плагин под файрФокс, [...]]]></description>
			<content:encoded><![CDATA[<p>Давно не писал, ибо пребываю сейчас в экстремальном непроходящем дебаге ))</p>
<p>О нем и будет короткая моя речь ))</p>
<p>Недавно вышла новая весрия флеш плеера, о чем было уже писано переписано, все дружно обновились, я полагаю ). В куче мы могли также качать дебаг-версию.<br />
И тут я вспомнил, что FlashTracer &#8211; милый плагин под файрФокс, позволяющий выводить трейс из флешек в режиме браузера, перестал откликаться, если я использую 9-ю версию дебаггера.</p>
<p>Как оказалось, такая проблема постигла не только меня. Решение найдено, спасибо Silin-у, подсказал верную мысль )</p>
<p>Дело в том, что я мануально поменял путь к файлу flashlog.txt, вытащив его из длинной цепочки <em>C:\Documents and Settings\user\Application Data\Macromedia\Flash Player\Logs</em>   немного поближе.<br />
Так вот флешки, опубликованные под версию плеера НИЖЕ 9-ки спокойно отдавали свои логи в этот файл В ЛЮБОМ дебаг плеере (тут конечно участие принял другой полезный аддон для FF &#8211; FlashSwitcher). Зато флешки, требующие как минимум 9-ю версию &#8211; тихо сдавали свои логи все по тому же длинному адресу по умолчанию, оставляя указанный мной flashlog.txt без должного внимания. Импичмент, понимаешь.</p>
<p>Так что пришлось смириться с адресом по умолчанию, но зато браузерный дебаг мой снова стал чистым и шелковистым. Вот веть какая штука.</p>
<p>PS. Кажется меня приняли в мксня-аггрегатор. Тут и проверим )) Ответсвенность то какая ))</p>
<img src="http://murejib.com/?ak_action=api_record_view&id=39&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2008/04/10/firefox-flashtracer-flashplayer9-debug/feed/</wfw:commentRss>
		<slash:comments>0</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>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>Защита от неплательщиков.</title>
		<link>http://murejib.com/2007/12/06/pay-protection/</link>
		<comments>http://murejib.com/2007/12/06/pay-protection/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 12:12:42 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[грабли]]></category>
		<category><![CDATA[traps]]></category>
		<category><![CDATA[utils]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=10</guid>
		<description><![CDATA[На волнах фриланса частенько попадаются жадные купцы. Денежку пожалеют, и разработчику не заплатят. Особенно озадачивает разработчика сей факт, когда он, наивный, отдал результат работы в жадные купцовы руки. Лучшая защита &#8211; работать только с теми, кто у вас в local-trust ))) Но вот еще небольшая подмога. Класс Permission. Для работы с ним, конечно понадобиться свой [...]]]></description>
			<content:encoded><![CDATA[<p>На волнах фриланса частенько попадаются жадные купцы.<br />
Денежку пожалеют, и разработчику не заплатят.<br />
Особенно озадачивает разработчика сей факт, когда он, наивный, отдал результат работы в жадные купцовы руки.</p>
<p>Лучшая защита &#8211; работать только с теми, кто у вас в local-trust )))</p>
<p><span id="more-11"></span></p>
<p>Но вот еще небольшая подмога. Класс Permission.<br />
Для работы с ним, конечно понадобиться свой родной домен,  на который вы сможете положить скромный crossdomain.xml. В нем укажите доступ  для того домена, на котором будет лежать результат вашей работы. Ну а если не знаете где именно, будет лежать разрешайте доступ всем. Хуже не будет.</p>
<p>Далее. Кладем у себя мальнький текстовый файл, в котором будут записаны две переменных allow=1 и message=ЗАПЛАТИ ДЕНЕГ!!!</p>
<p>Пока allow=1 флешка будет работать как положено.<br />
Но как только вам покажется, что денег больше не видать &#8211; меняйте allow=0.<br />
Теперь все будут поверх флешки периодически читать ваш душещипательный message.</p>
<p>Конечно, по завершении работ, в случае благополучной оплаты &#8211; лучше убрать эту мышеловку из кода, и отправить финальный , стерильный вариант.</p>
<p><strong>Использование:</strong></p>
<p>Просто заводим новый экземпляр Permission и передаем в конструкторе путь к текстовому файлу.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> my_permission:Permission = <span style="color: #000000; font-weight: bold;">new</span> Permission<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;my_domain.net/my_permission.txt&quot;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p><strong>Код классa:</strong> <a href="http://bbexp.ru/ru/decafe/utils/Permission.as">ru.decafe.utils.Permission</a></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**
* class ru.decafe.utils.Permission
* @author Mikhail Ivanchuk
* @version 0.1
*/</span>
<span style="color: #0066CC;">import</span> ru.<span style="color: #006600;">decafe</span>.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Cache</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> ru.<span style="color: #006600;">decafe</span>.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Permission</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span>  theURL:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;&quot;</span>;
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> accessor:<span style="color: #0066CC;">LoadVars</span>;
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> blinker:<span style="color: #0066CC;">Number</span>;
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> alert_mc:<span style="color: #0066CC;">MovieClip</span>;
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">message</span>:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;&quot;</span>;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Permission<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">url</span>:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		theURL = <span style="color: #0066CC;">url</span>;
		accessor = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">LoadVars</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> loadAccess<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> refer:Permission = <span style="color: #0066CC;">this</span>;
		<span style="color: #000000; font-weight: bold;">var</span> _key:<span style="color: #0066CC;">String</span> = theURL.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;?&quot;</span><span style="color: #66cc66;">&#41;</span>==-<span style="color: #cc66cc;">1</span>?<span style="color: #ff0000;">&quot;?&quot;</span>:<span style="color: #ff0000;">&quot;&amp;amp;&quot;</span>;
		accessor.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span>theURL+Cache.<span style="color: #006600;">disable</span><span style="color: #66cc66;">&#40;</span>_key+<span style="color: #ff0000;">&quot;nocache=&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
		accessor.<span style="color: #0066CC;">onLoad</span> = <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span>success:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> mode:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;demo&quot;</span>;
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>success <span style="color: #66cc66;">&amp;</span>amp;<span style="color: #66cc66;">&amp;</span>amp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">allow</span> == <span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				mode = <span style="color: #ff0000;">&quot;allow&quot;</span>;
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;mode: &quot;</span>+mode+<span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>+<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">message</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>mode==<span style="color: #ff0000;">&quot;demo&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				refer.<span style="color: #0066CC;">message</span> = <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">message</span>;
				refer.<span style="color: #006600;">blinker</span> = <span style="color: #0066CC;">setInterval</span><span style="color: #66cc66;">&#40;</span>refer,<span style="color: #ff0000;">&quot;alert&quot;</span>,<span style="color: #cc66cc;">10000</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> alert<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <span style="color: #66cc66;">&#123;</span>
		alert_mc = _level0.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;alrt&quot;</span>,_level0.<span style="color: #0066CC;">getNextHighestDepth</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #000000; font-weight: bold;">var</span> txt:<span style="color: #0066CC;">TextField</span> = alert_mc.<span style="color: #0066CC;">createTextField</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;txt&quot;</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">150</span>,<span style="color: #cc66cc;">60</span><span style="color: #66cc66;">&#41;</span>;
		txt.<span style="color: #0066CC;">background</span> = <span style="color: #000000; font-weight: bold;">true</span>;
&nbsp;
		txt.<span style="color: #0066CC;">multiline</span> = <span style="color: #000000; font-weight: bold;">true</span>;
		txt.<span style="color: #0066CC;">wordWrap</span> = <span style="color: #000000; font-weight: bold;">true</span>;
		txt.<span style="color: #0066CC;">backgroundColor</span> = 0xDEDEDE;
		txt.<span style="color: #0066CC;">border</span> = <span style="color: #000000; font-weight: bold;">true</span>;
		txt.<span style="color: #0066CC;">borderColor</span> = <span style="color: #cc66cc;">0</span>;
		txt.<span style="color: #0066CC;">html</span> = <span style="color: #000000; font-weight: bold;">true</span>;
		txt.<span style="color: #0066CC;">condenseWhite</span> = <span style="color: #000000; font-weight: bold;">true</span>;
		txt.<span style="color: #0066CC;">htmlText</span> = <span style="color: #ff0000;">&quot;
&nbsp;
&lt;span style=&quot;</span>font-family: Arial;<span style="color: #ff0000;">&quot;&gt;&quot;</span>+<span style="color: #0066CC;">message</span>+<span style="color: #ff0000;">&quot;
&nbsp;
&quot;</span>;
		alert_mc.<span style="color: #006600;">counter</span> = <span style="color: #cc66cc;">100</span>;
		alert_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: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">counter</span>--;
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>.<span style="color: #006600;">counter</span><span style="color: #66cc66;">&amp;</span>lt;<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">removeMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&lt;/</span>span<span style="color: #66cc66;">&gt;</span></pre></div></div>

<p><span style="font-family: Arial;">+ Cache.as, который необходим для работы класса Permission: <a href="http://bbexp.ru/ru/decafe/utils/Cache.as">ru.decafe.utils.Cache </a></p>
<p></span></p>
<img src="http://murejib.com/?ak_action=api_record_view&id=11&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2007/12/06/pay-protection/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Опасные FlashVars</title>
		<link>http://murejib.com/2007/12/05/dangerous_flashvars/</link>
		<comments>http://murejib.com/2007/12/05/dangerous_flashvars/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 09:02:08 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS2.0]]></category>
		<category><![CDATA[грабли]]></category>
		<category><![CDATA[traps]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=7</guid>
		<description><![CDATA[Flashvars долго казались мне самой безобидной субстанцией. Однако и у них есть пара опасных моментов. Не забываем, что все данные, переданные через flashvars &#8211; это String. То есть если нужно передать число или булеву переменную &#8211; будьте добры, используйте приведение типов. И лучше руками, не полагаясь на автомат. Недавно обнаруженная грабля. Допустим у нас есть [...]]]></description>
			<content:encoded><![CDATA[<p>Flashvars долго казались мне самой безобидной субстанцией.<br />
Однако и у них есть пара опасных моментов.</p>
<p><span id="more-8"></span></p>
<ul>
<li>Не забываем, что все данные, переданные через flashvars &#8211; это String.<br />
То есть если нужно передать число или булеву переменную &#8211; будьте добры, используйте приведение типов. И лучше руками, не полагаясь на автомат.</li>
<li>Недавно обнаруженная грабля.<br />
Допустим у нас есть флешка, на основном таймлайне которой мы импортируем пакет <span style="color: #333399;">flash.filters.* </span>. Или не импортируем на таймлайн, но создаем переменную некоего класса <em>SomeClass</em>, в коде которого мы как раз и производим этот импорт.<br />
Так вот ежели мы передадим flashvar  <em>flash=kill_my_package,</em> то мы наглухо убъем доступ к пакету flash. Точно так же можно убить пакеты mx, ru, com и все необходимое )). Однако если мы будем импортировать пакеты на временной линейке любого другого мувиКлипа, лежащего на основной линейке, то все будет работать.</li>
</ul>
<p>А вывод прост: следим за именами переменных, откуда бы они не приходили. Потому как и во вложенном клипе можно убить доступ к пакету, просто объявив в нем переменную</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> flash:<span style="color: #0066CC;">Boolean</span> = <span style="color: #000000; font-weight: bold;">false</span>;</pre></div></div>

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

