<?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/"
	>

<channel>
	<title>MerlinDS &#187; Статьй</title>
	<atom:link href="http://www.merlinds.com/aricles/feed" rel="self" type="application/rss+xml" />
	<link>http://www.merlinds.com</link>
	<description>ActionScript3 Development</description>
	<pubDate>Tue, 06 Jul 2010 13:26:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Поиск Flash разработчика</title>
		<link>http://www.merlinds.com/aricles/363.html</link>
		<comments>http://www.merlinds.com/aricles/363.html#comments</comments>
		<pubDate>Tue, 06 Jul 2010 13:26:34 +0000</pubDate>
		<dc:creator>Merlin</dc:creator>
		
		<category><![CDATA[Статьй]]></category>

		<guid isPermaLink="false">http://www.merlinds.com/?p=363</guid>
		<description><![CDATA[
Position  goals 
Development of the flash  client UI and infrastructure.
The position will include  design, development, elements coding that will be integrated with the game  server and other infrastructure systems.
Maintenance of the  applications 

Required  skills

At least 2 years of  experience with flash development in client server environment.
Deep knowledge with [...]]]></description>
			<content:encoded><![CDATA[<div dir="ltr"><span style="font-family: Tahoma; color: #000000; font-size: x-small;"></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="text-decoration: underline;"><span>Position  goals</span></span><span dir="rtl" lang="HE"> </span></span></p>
<p class="MsoNormal"><span><span style="font-size: small;">Development of the flash  client UI and infrastructure.</span></span></p>
<p class="MsoNormal"><span><span style="font-size: small;">The position will include  design, development, elements coding that will be integrated with the game  server and other infrastructure systems.</span></span></p>
<p class="MsoNormal"><span><span style="font-size: small;">Maintenance of the  applications </span></span></p>
<p class="MsoNormal"><span style="text-decoration: underline;"></span></p>
<p class="MsoNormal"><span style="text-decoration: underline;"><span><span style="font-size: small;">Required  skills</span></span></span></p>
<ul type="disc">
<li class="MsoNormal"><span><span style="font-size: small;">At least 2 years of  experience with flash development in client server environment.</span></span></li>
<li class="MsoNormal"><span><span style="font-size: small;">Deep knowledge with  action script 2 - must.</span></span></li>
<li class="MsoNormal"><span><span style="font-size: small;">Knowledge with action  script 3 - advantage.</span></span></li>
<li class="MsoNormal"><span><span style="font-size: small;">Knowledge with Java  Script, ASP, HTML developments.</span></span></li>
<li class="MsoNormal"><span><span style="font-size: small;">Knowledge with OOD  (C#/C++/Java) - advantage.</span></span></li>
<li class="MsoNormal"><span><span style="font-size: small;">Past experience with  gaming development</span></span></li>
<li class="MsoNormal"><span><span style="font-size: small;">A degree in Computer  science<span> </span>- advantage </span></span></li>
</ul>
<p class="MsoNormal"><span style="text-decoration: underline;"><span></span></span></p>
<p class="MsoNormal"><span style="text-decoration: underline;"><span><span style="font-size: small;">Required  qualifications</span></span></span></p>
<ul type="disc">
<li class="MsoNormal"><span><span style="font-size: small;">Hard worker<span> </span></span></span></li>
<li class="MsoNormal"><span><span style="font-size: small;">A very good  English</span></span></li>
<li class="MsoNormal"><span><span style="font-size: small;">Ability to work in a team  and alone as well.</span></span></li>
<li class="MsoNormal"><span><span style="font-size: small;">High level of  interpersonal relationship.</span></span></li>
<li class="MsoNormal"><span><span style="font-size: small;">Ability to propose  creative solutions (Sharp mind)</span></span></li>
<li class="MsoNormal"><span><span style="font-size: small;">Autodidact</span></span></li>
</ul>
<p></span></div>
<p>E-mail: <a href="resume_kiev@orneon.com">resume_kiev@orneon.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.merlinds.com/aricles/363.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Flash player 10.1 Beta для Android 2.2</title>
		<link>http://www.merlinds.com/aricles/357.html</link>
		<comments>http://www.merlinds.com/aricles/357.html#comments</comments>
		<pubDate>Fri, 18 Jun 2010 23:26:44 +0000</pubDate>
		<dc:creator>Merlin</dc:creator>
		
		<category><![CDATA[Статьй]]></category>

		<category><![CDATA[News from Adobe Labs]]></category>

		<guid isPermaLink="false">http://www.merlinds.com/?p=357</guid>
		<description><![CDATA[Вышел публичный релиз Flash player 10.1 Beta 3 для Android 2.2.
Это оптимизированный Flash плеер под мобильные платформы, такие как Windows 7, Mac OS X 10.6 (“Snow Leopard”) и Android 2.2.
 Flash player 10.1 к тому же имеет ряд новых для мобильных устройств функций, которые используют преимущества встроенных возможностях устройства, такие как мобильный ввод (управление, ввод текста и т.д.), [...]]]></description>
			<content:encoded><![CDATA[<p>Вышел публичный релиз <strong>Flash player 10.1 Beta 3 для Android 2.2</strong>.</p>
<p>Это оптимизированный Flash плеер под мобильные платформы, такие как Windows 7, Mac OS X 10.6 (“Snow Leopard”) и <strong>Android 2.2</strong>.<br />
<strong> Flash player 10.1</strong> к тому же имеет ряд новых для мобильных устройств функций, которые используют преимущества встроенных возможностях устройства, такие как мобильный ввод (<em>управление, ввод текста и т.д.</em>), акселерометр, SWF режим фокусировки, полноэкранный режим&#8230;</p>
<p>Системные требования для установки на Android 2.2:<br />
Собственно Google Nexus One и другие девайсы с Android&#8217;ом на борту.</p>
<p>Ознакомиться с новыми возможностями, а так же проблемами, можно по ссылке: <a href="http://labs.adobe.com/wiki/index.php/Flash_Player_10.1_for_Android">Flash Player 10.1 for Android beta Release Notes</a><br />
Скачать плеер <strong>Flash player 10.1</strong>: <a href="http://labs.adobe.com/wiki/index.php/Flash_Player_10.1_for_Android">Flash Player 10.1 for Android beta Release Notes</a></p>
<p>Установка плеера на Android 2.2: осуществляется через Android Market.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.merlinds.com/aricles/357.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Adobe AIR 2 SDK доступно для скачивания</title>
		<link>http://www.merlinds.com/aricles/353.html</link>
		<comments>http://www.merlinds.com/aricles/353.html#comments</comments>
		<pubDate>Wed, 16 Jun 2010 08:05:18 +0000</pubDate>
		<dc:creator>Merlin</dc:creator>
		
		<category><![CDATA[Статьй]]></category>

		<category><![CDATA[News from Adobe Labs]]></category>

		<guid isPermaLink="false">http://www.merlinds.com/?p=353</guid>
		<description><![CDATA[AIR 2 теперь доступна для скачивания: http://www.adobe.com/products/air/
Новые возможности:

Поддержка мультитач.
API нативных процессов, призванный облегчать взаимодействия с &#8220;родными&#8221; приложениями и библиотеками.
Нативный обработчик документов, открывающий такие форматы как PDF, PSD, DOC, PPT и MP3.
Локальный микрофон который позволит записывать аудио прямо на девайс, без необходимости связываться с сервером.
Поддержка UPD (User Datagram Protocol), для построения быстрых риал-тайм приложений, таких как мультиплеер игр.
Поддержка WebKit с [...]]]></description>
			<content:encoded><![CDATA[<p><strong>AIR 2 теперь доступна для скачивания</strong>: <a title="adobe.com" href="http://www.adobe.com/products/air/" target="_blank">http://www.adobe.com/products/air/</a></p>
<p>Новые возможности:</p>
<ul>
<li>Поддержка мультитач.</li>
<li>API нативных процессов, призванный облегчать взаимодействия с &#8220;родными&#8221; приложениями и библиотеками.</li>
<li>Нативный обработчик документов, открывающий такие форматы как PDF, PSD, DOC, PPT и MP3.</li>
<li>Локальный микрофон который позволит записывать аудио прямо на девайс, без необходимости связываться с сервером.</li>
<li>Поддержка UPD (<em>User Datagram Protocol</em>), для построения быстрых риал-тайм приложений, таких как мультиплеер игр.</li>
<li>Поддержка WebKit с HTML5/CSS3</li>
<li>Обнаружение запоминающих устройств, определяющее когда камера или USB flash карта готова для синхронизации MP3, фидео, фото файлов.</li>
<li>Расширенная поддержка drag-and-drop</li>
<li>Сокет сервер и peer-to-peer приложения</li>
<li>Увеличен максимальный размер приложений, теперь он 4095х4095</li>
<li>TLS/SSL сокеты</li>
<li>Значительно снижена нагрузка на процессор и оперативную память (<em>на 30% в некоторых приложениях</em>)</li>
<li>Увеличение скорости выполнения JavaScript кода на 50%.</li>
<li>Глобальный прослушивание ошибок.</li>
<li>Защита внутреннего контента (<em>только для десктопов</em>)</li>
</ul>
<p>Более детальную информацию можно почитать здесь:  <a title="adobe" href="http://www.adobe.com/products/air/features/" target="_blank">http://www.adobe.com/products/air/features/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.merlinds.com/aricles/353.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Realaxy Actionscript Editor</title>
		<link>http://www.merlinds.com/aricles/349.html</link>
		<comments>http://www.merlinds.com/aricles/349.html#comments</comments>
		<pubDate>Tue, 15 Jun 2010 18:57:32 +0000</pubDate>
		<dc:creator>Merlin</dc:creator>
		
		<category><![CDATA[Статьй]]></category>

		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.merlinds.com/?p=349</guid>
		<description><![CDATA[Умный, современный и революционный редактор для работы с ActionScript, который открывает массу возможностей для AS разработчиков.
- так пишут разработчики о своем детище на официальном сайте.
А с недавних пор Realaxy вышел в открытый бета - тест и можно посмотреть что он из себя представляет.
Также о &#8220;трудностях&#8221; работы с ним можно ознакомится в статье Realaxy Actionscript Editor [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>Умный, современный и революционный редактор для работы с ActionScript, который открывает массу возможностей для AS разработчиков.</em></p></blockquote>
<p>- так пишут разработчики о своем детище на <a title="www.realaxy.com" href="http://www.realaxy.com/editor/index?lang=ru_RU" target="_blank">официальном сайте</a>.<br />
А с недавних пор Realaxy вышел в открытый <a title="RASE Public Beta is out!" href="http://www.realaxy.com/blog/en/entry/rase_public_beta_is_out" target="_blank">бета - тест</a> и можно посмотреть что он из себя представляет.<br />
Также о &#8220;трудностях&#8221; работы с ним можно ознакомится в статье <a title="Хабр: Realaxy Actionscript Editor Tutorial — «Первое знакомство»" href="Realaxy Actionscript Editor Tutorial — «Первое знакомство»" target="_blank">Realaxy Actionscript Editor Tutorial — «Первое знакомство»</a></p>
<p>Так что спешим познакомится с принципиально новым редактором для ActionScript.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.merlinds.com/aricles/349.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Паттерн Декоратор (Decorator), реализация на as3</title>
		<link>http://www.merlinds.com/aricles/318.html</link>
		<comments>http://www.merlinds.com/aricles/318.html#comments</comments>
		<pubDate>Tue, 16 Mar 2010 20:30:27 +0000</pubDate>
		<dc:creator>Merlin</dc:creator>
		
		<category><![CDATA[Статьй]]></category>

		<category><![CDATA[Design Pattern]]></category>

		<guid isPermaLink="false">http://www.merlinds.com/?p=318</guid>
		<description><![CDATA[Декоратор (Decorator) - паттерн проектирования, с помощью которого можно добавить объекту новые обязанности, опции, не изменяя его внутренней структуры. Известен также под названием Обёртка (Wrapper), которое во многом раскрывает его суть. Он оборачивает собой целевой объект и дополняет его основные функции. Это дает возможность расширять объект, добавлением или удалением обрамляющего декоратора без изменения самого объекта.
Для лучшего понимания, что [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Декоратор (Decorator)</strong> - паттерн проектирования, с помощью которого можно добавить объекту новые обязанности, опции, не изменяя его внутренней структуры. Известен также под названием <strong>Обёртка</strong> (<strong>Wrapper</strong>), которое во многом раскрывает его суть. Он оборачивает собой целевой объект и дополняет его основные функции. Это дает возможность расширять объект, добавлением или удалением обрамляющего декоратора без изменения самого объекта.</p>
<p>Для лучшего понимания, что собой представляет шаблон <strong>Декоратор</strong>, а я бы назвал его русским именем <span>Matryoshka, рассмотри конкретный пример. Допустим нам необходимо расширить класс </span><strong>MyButton </strong><span>для добавления в него отступов (padding), рамки (border) и фона (background), то есть изменить отображение класса, причем добавляться элементы оформления должны как одновременно, так и по отдельности. Конечно можно добавить новые обязанности с помощью наследования, но это породит большое количество классов и будет более статическим решением, что не даст достаточной гибкости в управлении.</span></p>
<p><span>Более рациональный и гибкий подходом к данной ситуации: поместить объект класса <strong>MyButton</strong> , в дальнейшем компонент, в другой объект, который и будет имплементировать интерфейс компонента и добавлять необходимые элементы, он и называется </span><em>декоратором</em><span>.  Важно понимать что декоратор следует интерфейсу декорируемого объекта, из-за чего он абсолютно прозрачен для клиента, поэтому декораторы могут вкладываться друг в друга, в произвольном порядке. Декоратор переадресует внешние вызовы компоненту, но может выполнять и дополнительные действия до или после переадресации. По этому клиент  не может отличить декорированный объект от недекорированного и никоим образом не зависит от наличия или отсутствия оформления.</span></p>
<p><span>А теперь давайте рассмотрим пример реализации шаблона на actionscritp 3:</span><br />
<span id="more-318"></span><br />
Сначала нам необходимо создать интерфейс для компонента, а также и декоратора. Назовем его IComponent</p>
<p>Так как я собираюсь наследовать <strong>MyButton</strong> от Sprite, важно и необходимо следить за тем, чтобы общие функции интерфейса и наследуемого класса были идентичны:</p>
<pre class="brush: as3;">
public interface IComponent
{
	function set width(value:Number):void;
	function get width():Number;

	function set height(value:Number):void;
	function get height():Number;

	//для назначения стиля
	function set decor(value:String):void;
	function get decor():String;

	function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void;
	function dispatchEvent(event:Event):Boolean;
}
</pre>
<p>Так как декоратор прозрачен для клиента и неизвестен для декорируемого объекта, то изменять состояния самого декоратора слегка проблематично. Первый вариант - прописать в интерфейсе возможные состояния декораторов и записывать их в компоненте, откуда декоратор будет брать данные. Этот способ не гибок и ведет к созданию лишних параметров объекта.<br />
Второй вариант - заставить декоратор реагировать на события объекта, при чем событие должно подыматься по цепочке пузырей и обновлять каждый декоратор. Этим вариантом и воспользуемся, событие назовем REDRAW, так как оно фактически перерисовывает декораторы.</p>
<p>Далее стоит создать супер классы компонентов и декораторов, важно что оба класса расширяют интерфейс IComponent, но каждый по своему:<br />
Component.as</p>
<pre class="brush: as3;">
//супер класс компонентов, желательно сделать его internal
public class Component extends Sprite implements IComponent
{
	private var decorator:String = 'all';//для того чтобы определить какой декоратор должен быть включен, по умолчанию это все декораторы
	public static const REDRAW:String = 'component_redraw';//событие по которому обновляются декораторы
	//контсанты событий желательно выделить в отдельный класс для меньшей связаности классов

	public function set decor(value:String):void{
		this.decorator = value;
		//высылаем событие для изменения состояния декоратора
		//важно чтобы событие проходило по цепочке пузырей
		//только в этом случае все декораторы получат событие REDRAW
		this.dispatchEvent(new Event(REDRAW, true, true));
	}

	public function get decor():String{return this.decorator;}
}
</pre>
<p>Decorator.as</p>
<pre class="brush: as3;">
//супер класс декораторов, желательно сделать его internal
internal class Decorator extends Sprite implements IComponent
	{
	protected var content:IComponent;
	protected var hitSprite:Boolean;

	public function Decorator(content:IComponent)
	{
		//записываем копонент в себя
		this.content = content;
		this.addChild(this.content as DisplayObject);
		//прослушиваем компонент на его изменения
		this.addEventListener(Component.REDRAW, this.redraw);
	}

	//функция перересовки декоратора, так как при дальнейшем redraw может быть вызвано
	// и не событием Component.REDRAW, в получаемых аргументах пишем ...args
	protected function redraw(...args):void{}

	//Переопределяем полученные данные компоненту, вниз по цепочке декораторов
	override public function set width(value:Number):void{this.content.width = value;}
	override public function get width():Number{return this.content.width;}

	override public function set height(value:Number):void{this.content.width = height;}
	override public function get height():Number{return this.content.height;}

	public function set decor(value:String):void{this.content.decor = value;}
	public function get decor():String{return this.content.decor};

	override public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void{
		//тригер для назначения декоратора областью прослушивания событий мыши
		//желательно подобного не допускать, но для примера пойдет <img src='http://www.merlinds.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
		if(!hitSprite)this.content.addEventListener(type, listener, useCapture, priority, useWeakReference);
		else super.addEventListener(type, listener, useCapture, priority, useWeakReference);
	}

	override public function dispatchEvent(event:Event):Boolean{
	return this.content.dispatchEvent(event);
	}
}
</pre>
<p>Приступим к созданию конкретных классов, первый идет наш класс MyButton:</p>
<pre class="brush: as3;">
//подкласс MyButton класса Component, который надо декорировать
	public class MyButton extends Component
	{
		public function MyButton()
		{
		//просто надпись для удобства
		var label:TextField = new TextField();
		label.autoSize = TextFieldAutoSize.LEFT;
		label.selectable = false;
		this.addChild(label);
		}
	}
</pre>
<p>А теперь посмотрите насколько просты классы декораторов:<br />
Paddingю.as</p>
<pre class="brush: as3;">
//Декоратор отступов
	public class Padding extends Decorator
	{
		private var size:int;
		private var triger:Boolean;

		public function Padding(content:IComponent){super(content);}

		override protected function redraw(...args):void{
			//если декоратор включен делаем отступы иначе возращаем все в 0
			if( this.decor == 'all' || this.decor == 'padding'){
				this.size = 5;
				//так делать не стоит но для примера я не хотел сильно
				//перегружать интерфейс и суппер класс декоратора
				this.content['x'] = this.size*2;
				this.content['y'] = this.size;
				this.triger = true;
			}else{
				this.size = 0;
				this.content['x'] = this.size;
				this.content['y'] = this.size;
				this.triger = false;
			}
		}

		//расширяет состояние
		override public function get width():Number{return this.content.width+this.size*4;}
		override public function get height():Number{return this.content.height+this.size*2;}

	}
</pre>
<p>Background.as</p>
<pre class="brush: as3;">
//Декоратор Фона
	public class Background extends Decorator
	{
		public function Background(content:IComponent){super(content);}

		override protected function redraw(...args):void{
		this.graphics.clear();
		if( this.decor == 'all' || this.decor == 'backgroud'){
		//если декоратор включен то рисуем фон
			this.graphics.beginFill(0x99cccc, 1);
			this.graphics.drawRect(0,0,this.width, this.height);
			this.graphics.endFill();
			}
		}
	}
</pre>
<p>Border.as</p>
<pre class="brush: as3;">
//Декоратор рамки
	public class Border extends Decorator
	{
		public function Border(content:IComponent){super(content);}

		override protected function redraw(...args):void{
			this.graphics.clear();
			if( this.decor == 'all' || this.decor == 'border'){
			//если декоратор включен то рисуем рамку
			this.graphics.lineStyle(1, 0x669999);
			this.graphics.drawRect(-1, -1, this.width+1, this.height+1);
			this.graphics.endFill()
			}
		}
	}
</pre>
<p>HitArea.as</p>
<pre class="brush: as3;">
//Декоратор зоны наведения мыши
	public class HitArea extends Decorator
	{
		public function HitArea(content:IComponent)
		{
		//просто включает прослушивание событий мыши
		super(content);
		this.mouseChildren = false;
		this.hitSprite = true;
		}
	}
</pre>
<p>И в конечном итоге соберем все части вместе и выведем на экран.<br />
main.as - главный класс приложения</p>
<pre class="brush: as3;">
	public function main()
	{
		var button:IComponent = this.createButton();
		this.addChild(button as DisplayObject).x;
	}
		private function createButton():IComponent{
		//создаем декораторы и компонент и вкладываем их друг в друга
		//Думаю такой порядок их вложения логичен ине требует объяснений
		var button:IComponent = new HitArea(new Border(new Background(new Padding(new MyButton()))));
		//отсылаем событие на активацию всех декораторов
		button.dispatchEvent(new Event(Component.REDRAW, true, true));
		button.addEventListener(MouseEvent.CLICK, this.handlerClick);
		return button;
	}
</pre>
<p>Пример того что получилось. <em>Каждый прямоугольник по своему реагирует на нажатие, оставляя лишь тот декоратор который написан на нем. Все прямоугольники созданы с помощью createButton и ничем друг от друга не отличаются</em>:</p>
<p><object width="320" height="100" data="http://work1.merlinds.com/decorator/main.swf" type="application/x-shockwave-flash"><param name="src" value="http://work1.merlinds.com/decorator/main.swf" /></object></p>
<p><a title="Архив с примером" href="http://work1.merlinds.com/decorator/decoratorExample.zip" target="_blank">код примера</a></p>
<p>Подведем небольшой итог:<br />
Паттерн <strong>Декоратор (Decorator)</strong> более гибок нежели наследование, он может добавлять и удалять обязанности во время выполнения программы. При использовании же наследования придется создавать новый класс для каждой дополнительной обязанности. Кроме того декоратор позволяет добавить одно и тоже свойство дважды. Например, если добавить Border два раза, то получим двойное обрамление.<br />
Но есть и явные недостатки, такие как множество мелких объектов, которые похожи друг на друга и различаются только способом взаимосвязи а не классом. А также детектор и его компонент не идентичны, о чем постоянно необходимо помнить.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.merlinds.com/aricles/318.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Квадратичная кривая Безье</title>
		<link>http://www.merlinds.com/aricles/270.html</link>
		<comments>http://www.merlinds.com/aricles/270.html#comments</comments>
		<pubDate>Wed, 10 Mar 2010 20:16:44 +0000</pubDate>
		<dc:creator>Merlin</dc:creator>
		
		<category><![CDATA[Мои работы]]></category>

		<category><![CDATA[Статьй]]></category>

		<category><![CDATA[Математика]]></category>

		<guid isPermaLink="false">http://www.merlinds.com/?p=270</guid>
		<description><![CDATA[Необходимо мне было разобраться с кривыми Безье, вернее с самым простым случаем, высчитать точки через которые проходит кривая построенная через 3 опорные точки. Немного порывшись в сети, даже не так, набрав в вики &#8220;Кривая Безье&#8220;, сразу нашел то что мне нужно.
Перевел формулу примерно так:
[/as3]

p3.x = Math.pow((1-t), 2)*p0.x + 2*t*(1-t)*p1.x + Math.pow(t, 2)*p2.x;
p3.y = Math.pow((1-t), 2)*p0.y [...]]]></description>
			<content:encoded><![CDATA[<p>Необходимо мне было разобраться с кривыми Безье, вернее с самым простым случаем, высчитать точки через которые проходит кривая построенная через 3 опорные точки. Немного порывшись в сети, даже не так, набрав в вики &#8220;<a href="http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%B2%D0%B0%D1%8F_%D0%91%D0%B5%D0%B7%D1%8C%D0%B5" target="_blank">Кривая Безье</a>&#8220;, сразу нашел то что мне нужно.</p>
<p>Перевел формулу примерно так:</p>
<pre class="brush: as3;">[/as3]

p3.x = Math.pow((1-t), 2)*p0.x + 2*t*(1-t)*p1.x + Math.pow(t, 2)*p2.x;
p3.y = Math.pow((1-t), 2)*p0.y + 2*t*(1-t)*p1.y + Math.pow(t, 2)*p2.y;

//Здесь p0, p1, p2 - опорные (белые) точки
//t - промежуток от 0 до 1
//p3 - точка в промежутке t

[as3]</pre>
<p>И вот пример того что вышло за 15 минут работы.<br />
Белые, опорные, точки можно тягать изменяя траекторию полета красной.</p>
<pre><object width="450" height="400" data="http://www.merlinds.com/wp-content/uploads/particles1.swf" type="application/x-shockwave-flash"><param name="src" value="http://www.merlinds.com/wp-content/uploads/particles1.swf" /></object></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.merlinds.com/aricles/270.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Предохранитель в while</title>
		<link>http://www.merlinds.com/aricles/250.html</link>
		<comments>http://www.merlinds.com/aricles/250.html#comments</comments>
		<pubDate>Tue, 23 Feb 2010 01:21:13 +0000</pubDate>
		<dc:creator>Merlin</dc:creator>
		
		<category><![CDATA[Статьй]]></category>

		<category><![CDATA[AS3 for beginners]]></category>

		<category><![CDATA[Quick notes]]></category>

		<guid isPermaLink="false">http://www.merlinds.com/?p=250</guid>
		<description><![CDATA[Чтобы избежать непредвиденной бесконечной зацикленности при использовании while можно использовать такой простенький ход:

var breaker:int;
while(/*условие */){
...
if(++breaker &#38;gt; 1000)break;
}

//Даже можно потом ошибочку выбросить
if(breaker &#38;gt; 1000)throw new Error('Epic Error!!!');

]]></description>
			<content:encoded><![CDATA[<p>Чтобы избежать непредвиденной бесконечной зацикленности при использовании while можно использовать такой простенький ход:</p>
<pre class="brush: as3;">
var breaker:int;
while(/*условие */){
...
if(++breaker &amp;gt; 1000)break;
}

//Даже можно потом ошибочку выбросить
if(breaker &amp;gt; 1000)throw new Error('Epic Error!!!');
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.merlinds.com/aricles/250.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>An internal build error has occurred. Злая ошибка с плохим описанием!</title>
		<link>http://www.merlinds.com/aricles/241.html</link>
		<comments>http://www.merlinds.com/aricles/241.html#comments</comments>
		<pubDate>Fri, 05 Feb 2010 01:10:57 +0000</pubDate>
		<dc:creator>Merlin</dc:creator>
		
		<category><![CDATA[Статьй]]></category>

		<category><![CDATA[Errors]]></category>

		<guid isPermaLink="false">http://www.merlinds.com/?p=241</guid>
		<description><![CDATA[Нарвался вот на подобную, неприятную ошибку, благо быстро нашел её причину: при создании класса сильно задумался о посторонних вещах и случайно наследовал его от самого себя.
 Примерно так:

public class MyClass extends MyClass

&#8220;An internal build error has occurred. Right-click for more information.&#8221; Сказал непонятно Flex Builder и заглох. Так что будьте бдительный и внимательны господа. Поменьше [...]]]></description>
			<content:encoded><![CDATA[<p>Нарвался вот на подобную, неприятную ошибку, благо быстро нашел её причину: при создании класса сильно задумался о посторонних вещах и случайно наследовал его от самого себя.<br />
<em> Примерно так:</em></p>
<pre class="brush: as3;">
public class MyClass extends MyClass
</pre>
<p>&#8220;<strong>An internal build error has occurred. Right-click for more information</strong>.&#8221; Сказал непонятно Flex Builder и заглох. Так что будьте бдительный и внимательны господа. Поменьше отвлекайтесь на разную порнуху при написании кода.<br />
И еще пару слов об <strong>internal build error</strong>. Подобное сообщение можно получить при следующих действиях:</p>
<ol>
<li>Оставить пустой конструкцию switch:
<pre class="brush: as3;">switch{//ничего не написано}</pre>
<p>.  Решение - удалить или полностью закомментировать  switch.</li>
<li>Наследование класса от самого себя. Решение - быть внимательнее <img src='http://www.merlinds.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>При остановки дебаг сессии, но не полной её удалении. Решение - в диспетчере задач убейте процесс <strong>adl.exe</strong> (их может быть 2) и перебилдите проект.</li>
<li>При переименовании существующего  проекта .project или .actionscript могут неправильно обновиться. Решение - пересоздать проект и переместите туда старые файлы, но лучше не переименовывать проекты.</li>
<li>Пропущенная точка с запятой на следующей строчке после тега Bindable.</li>
</ol>
<p>Если ничего не помогло, попробуйте зайти в &#8220;журнал ошибок&#8221;, не совсем удобно, но может там вы сможете найти место где произошла ошибка.<br />
Help -&gt; About Eclipse SDK -&gt; Configuration Details -&gt; View Error Log.</p>
<p>Информация взята из статьи <a href="http://9mmedia.com/blog/?p=165">An internal build error has occurred. Worst error description ever!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.merlinds.com/aricles/241.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Быстрая проверка пустоты в Object</title>
		<link>http://www.merlinds.com/aricles/234.html</link>
		<comments>http://www.merlinds.com/aricles/234.html#comments</comments>
		<pubDate>Tue, 02 Feb 2010 20:57:13 +0000</pubDate>
		<dc:creator>Merlin</dc:creator>
		
		<category><![CDATA[Статьй]]></category>

		<category><![CDATA[Quick notes]]></category>

		<guid isPermaLink="false">http://www.merlinds.com/?p=234</guid>
		<description><![CDATA[Быстрая проверка Object или Dictionary на существование в нем элементов:


for(var n:String in dict)return void;

dict - это наш например Dictionary. Если в нем что-то есть, сбрасывает функцию, если же он пустой то продолжаем работать.
]]></description>
			<content:encoded><![CDATA[<p>Быстрая проверка Object или Dictionary на существование в нем элементов:</p>
<pre class="brush: as3;">

for(var n:String in dict)return void;
</pre>
<p>dict - это наш например Dictionary. Если в нем что-то есть, сбрасывает функцию, если же он пустой то продолжаем работать.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.merlinds.com/aricles/234.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Игры</title>
		<link>http://www.merlinds.com/aricles/225.html</link>
		<comments>http://www.merlinds.com/aricles/225.html#comments</comments>
		<pubDate>Thu, 12 Nov 2009 01:15:41 +0000</pubDate>
		<dc:creator>Merlin</dc:creator>
		
		<category><![CDATA[Мои работы]]></category>

		<category><![CDATA[Статьй]]></category>

		<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://www.merlinds.com/?p=225</guid>
		<description><![CDATA[Давно уже не писал постов в свой блог, но к сожалению просто не было время.
Сейчас пишу мини игру, что-то вроде &#8220;Heroes of might and magic&#8221; и &#8220;Disciples&#8221;, пока под названием Lokys Dungeons.
 (Так сказать предварительный скриншот)
По сему, надеюсь в скоро времени напишу пару статей по поводу разработки игр, первая будет о волновом Pathfinding&#8217;е, его алгоритме [...]]]></description>
			<content:encoded><![CDATA[<p>Давно уже не писал постов в свой блог, но к сожалению просто не было время.<br />
Сейчас пишу мини игру, что-то вроде &#8220;Heroes of might and magic&#8221; и &#8220;Disciples&#8221;, пока под названием Lokys Dungeons.</p>
<p><a href="http://www.merlinds.com/wp-content/uploads/part1.png"><img class="size-thumbnail wp-image-226 alignnone" title="Lokys Dungeons" src="http://www.merlinds.com/wp-content/uploads/part1-150x150.png" alt="Lokys Dungeons" width="150" height="150" /></a> (Так сказать предварительный скриншот)</p>
<p>По сему, надеюсь в скоро времени напишу пару статей по поводу разработки игр, первая будет о волновом Pathfinding&#8217;е, его алгоритме и олицетворении его в коде, а далее по нарастающей <img src='http://www.merlinds.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Также появилась мысль о создании игры в стиле Кримсонленд о &#8220;Зоне отчуждения&#8221; с нестандартным геймплеем и интересным сюжетом, не просто стрелялка. Пока думаю, читаю и ищу инфу по ключевым моментам, но как только завершиться проект &#8221; Lokys Dungeons&#8221; приступлю к разработке.</p>
<p>Параллельно постараюсь освещать в блоге интересные места в создании игр с которыми я сталкиваюсь и делать это как можно чаще.<br />
Так что если вам интересна данная тема, ждите новых постов.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.merlinds.com/aricles/225.html/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
