<?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; Action Script (Flex, Flash)</title>
	<atom:link href="http://grigorkin.ru/category/programmirovanie/action-script-flex-flash/feed/" rel="self" type="application/rss+xml" />
	<link>http://grigorkin.ru</link>
	<description>Блог Григорькина, записи о программировании, саморазвитии, бизнесе, IT, интернете, стартапах и блоггинге.</description>
	<lastBuildDate>Fri, 20 Aug 2010 18:01:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Что я вынес из последнего проекта на Action Script (Flex, Flash)</title>
		<link>http://grigorkin.ru/2009/10/chto-ya-vynes-iz-poslednego-proekta-na-action-script-flex-flash/</link>
		<comments>http://grigorkin.ru/2009/10/chto-ya-vynes-iz-poslednego-proekta-na-action-script-flex-flash/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 21:48:32 +0000</pubDate>
		<dc:creator>alexypnz</dc:creator>
				<category><![CDATA[Action Script (Flex, Flash)]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Проекты]]></category>

		<guid isPermaLink="false">http://grigorkin.ru/?p=235</guid>
		<description><![CDATA[
			
				
			
		
Итак, крайний проект, в котором я принимал непосредственное участие &#8211; это нарезалка mp3 для мобильника.
Лично мой вклад в рождение данного сервиса заключался в реализации веб-морды, то бишь флешки, в которой всё варится.

Нужно сделать красивую и сложную заливку?
Используйте класс BitmapData. Именно с его помощью реализована заливка градиентом выделенной области рингтонмейкера.
Пример
Определяем пиксельную карту:

fillProgressBarMap = new BitmapData&#40;1, 28, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgrigorkin.ru%2F2009%2F10%2Fchto-ya-vynes-iz-poslednego-proekta-na-action-script-flex-flash%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgrigorkin.ru%2F2009%2F10%2Fchto-ya-vynes-iz-poslednego-proekta-na-action-script-flex-flash%2F&amp;source=grigorkin&amp;style=normal&amp;service=bit.ly&amp;service_api=R_afb3f311e34d0f5d967124d9942b29a3" height="61" width="50" /><br />
			</a>
		</div>
<p>Итак, крайний проект, в котором я принимал непосредственное участие &#8211; это <a href="http://www.ringtonemaker.ru/">нарезалка mp3 для мобильника</a>.</p>
<p>Лично мой вклад в рождение данного сервиса заключался в реализации веб-морды, то бишь флешки, в которой всё варится.</p>
<p><span id="more-235"></span></p>
<h3><strong>Нужно сделать красивую и сложную заливку?</strong></h3>
<p><strong><img class="alignleft size-full wp-image-240" title="gradient" src="http://grigorkin.ru/wp-content/uploads/gradient.png" alt="gradient" width="41" height="45" /></strong>Используйте класс BitmapData. Именно с его помощью реализована заливка градиентом выделенной области рингтонмейкера.</p>
<p><strong>Пример</strong><br />
Определяем пиксельную карту:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">fillProgressBarMap = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">BitmapData</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span>, <span style="color: #000000; font-weight:bold;">28</span>, <span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000000;">&#41;</span>;
fillProgressBarMap.<span style="color: #004993;">setPixel</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>, <span style="color: #000000; font-weight:bold;">0</span>, 0x4ab0ff<span style="color: #000000;">&#41;</span>;
fillProgressBarMap.<span style="color: #004993;">setPixel</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>, <span style="color: #000000; font-weight:bold;">1</span>, 0x4ab0ff<span style="color: #000000;">&#41;</span>;
fillProgressBarMap.<span style="color: #004993;">setPixel</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>, <span style="color: #000000; font-weight:bold;">2</span>, 0x4ab0ff<span style="color: #000000;">&#41;</span>;
fillProgressBarMap.<span style="color: #004993;">setPixel</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>, <span style="color: #000000; font-weight:bold;">3</span>, 0x4ab0ff<span style="color: #000000;">&#41;</span>;
fillProgressBarMap.<span style="color: #004993;">setPixel</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>, <span style="color: #000000; font-weight:bold;">4</span>, 0xd1eafc<span style="color: #000000;">&#41;</span>;
...
fillProgressBarMap.<span style="color: #004993;">setPixel</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>, <span style="color: #000000; font-weight:bold;">27</span>, 0x29d2f7<span style="color: #000000;">&#41;</span>;</pre></div></div>

<p>Собственно, рисуем:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">sliderValue.<span style="color: #004993;">graphics</span>.<span style="color: #004993;">beginBitmapFill</span><span style="color: #000000;">&#40;</span>fillProgressBarMap, <span style="color: #0033ff; font-weight: bold;">null</span>, <span style="color: #0033ff; font-weight: bold;">true</span>, <span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000000;">&#41;</span>;
sliderValue.<span style="color: #004993;">graphics</span>.<span style="color: #004993;">drawRect</span><span style="color: #000000;">&#40;</span>getLeftSliderX<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>, <span style="color: #000000; font-weight:bold;">0</span>, getRightSliderX<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">-</span> getLeftSliderX<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">+</span> <span style="color: #000000; font-weight:bold;">1</span>, sliderValue.<span style="color: #004993;">height</span><span style="color: #000000;">&#41;</span>;</pre></div></div>

<p></p>
<h3>Вызывать методы из родителя напрямую &#8211; зло, за которое нужно бить по рукам!</h3>
<p>Данная аксиома вертелась у меня в уме уже давно, но каждый раз я пытаюсь ею пренебречь. Думаю: ну надо &#8211; то всего один метод вызвать, зачем забор городить со всякими events? Но, в итоге снова возвращаюсь к этой к этой аксиоме и пользуюсь Event`ами. Евенты, они же события &#8211; сильнейшая сторона ActionScript.</p>
<p><strong>Пример</strong><br />
Говорим всем, что наш компонент может сгенерировать вот такой event:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Metadata</span><span style="color: #7400FF;">&gt;</span></span>
    [Event(name=&quot;playFromMsec&quot;, type=&quot;com.view.MySlider.SliderEvent&quot;)]
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Metadata</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Вешаемся на этот тип события в родителе:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;view:MySlider</span> playFromMsec=<span style="color: #ff0000;">&quot;{ onSliderPlayFromMsec(event) }&quot;</span> <span style="color: #7400FF;">/&gt;</span></span></pre></div></div>

<p>Генерируем событие в дочернем компоненте:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> playFromPosEvent<span style="color: #000000; font-weight: bold;">:</span>SliderEvent = <span style="color: #0033ff; font-weight: bold;">new</span> SliderEvent<span style="color: #000000;">&#40;</span>SliderEvent.EVENT_PLAY_FROM_POS<span style="color: #000000;">&#41;</span>;
playFromPosEvent.pos = leftSliderMsecPos;
<span style="color: #004993;">dispatchEvent</span><span style="color: #000000;">&#40;</span>playFromPosEvent<span style="color: #000000;">&#41;</span>;</pre></div></div>

<p></p>
<h3>Используйте stopImmediatePropagation() и preventDefault() для отмены события</h3>
<p>Встала задача &#8211; показать по клику на кнопку &#8220;Help&#8221; поверх всего окно с помощью, потом по клику в любой области, даже по кнопке &#8211; закрыть его. Кстати говоря, впервые за свою скромную практику использования AS3 использовал stopImmediatePropagation и preventDefault. Задача была решена с использованием этих двух методов. Задача этих методов &#8211; остановить дальнейшее выполнение текущего эвента, очень полезная вещь, как ни крути.</p>
<p></p>
<h3>Не всегда для динамических элементов необходимы картинки состояний</h3>
<p><img class="alignleft size-full wp-image-271" title="button" src="http://grigorkin.ru/wp-content/uploads/button.png" alt="button" width="134" height="62" /> Большинство кнопок, если на них нет замысловатого градиента или фактуры можно реализовать с помощью пары VBox`ов, Label`ов и шаманства со стилями <img src='http://grigorkin.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p></p>
<h3>Не подбирайте значения стилей &#8220;на глаз&#8221;. Используйте Flex3 Style Explorer</h3>
<p><a href="http://grigorkin.ru/wp-content/uploads/Flex3StyleExplorer.swf"><img class="aligncenter size-full wp-image-286" title="Flex3StyleExplorer" src="http://grigorkin.ru/wp-content/uploads/flexStyleExplorer.png" alt="Flex3StyleExplorer" width="542" height="250" /></a></p>
<p></p>
<h3>Убираем размытие под Alert`ом</h3>
<p><a href="http://grigorkin.ru/wp-content/uploads/antiBlur1.png"><img class="aligncenter size-full wp-image-299" title="antiBlur" src="http://grigorkin.ru/wp-content/uploads/antiBlur1.png" alt="antiBlur" width="564" height="122" /></a></p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Style</span><span style="color: #7400FF;">&gt;</span></span>
    Alert
    {
        modalTransparencyBlur: 0;
        modalTransparency: 0;
        modalTransparencyColor: #FFFFFF;
        modalTransparencyDuration: 10;
    }
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Style</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Вот это, собственно всё, чем я хотел поделиться <img src='http://grigorkin.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://grigorkin.ru/2009/10/chto-ya-vynes-iz-poslednego-proekta-na-action-script-flex-flash/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
