<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.flashist.ru" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Фреймворк</title>
 <link>http://www.flashist.ru/taxonomy/term/109</link>
 <description>Представление таксономии с учетом глубины 0.</description>
 <language>ru</language>
<item>
 <title>PushButton Engine: Урок #1</title>
 <link>http://www.flashist.ru/lessons/pushbutton-engine-urok-1</link>
 <description>&lt;p&gt;И вот я задумался об изучении какого-нибудь игрового фреймворка, для создания, не поверите, ИГР!!! Да, да, именно фреймворка, а не движка, так как хотелось бы, чтобы фреймворк предоставлял определённый функционал по облегчению создания игр, который не могут и, наверно, не должны, предоставлять игровые движки (фреймворк — управление страницами, стандартизация создания уровений и т.п., а движок — это поиск столкновений и «эмуляция» физики движения объектов). В общем, моё желание сподвигнуло меня на изучение какого-нибудь фреймворка, и, в качестве пробы я решил выбрать &lt;a href=&quot;http://pushbuttonengine.com&quot; class=&quot;bb-url&quot;&gt;PushButton Engine&lt;/a&gt;, о котором я слышал уже давно, но как-то всё не приходилось его опробовать.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Время для перевода&lt;/h3&gt;&lt;br /&gt;
В качестве отправной точки для изучения &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt; я для себя выбрал &lt;a href=&quot;http://pushbuttonengine.com/docs/#Lessons&quot; class=&quot;bb-url&quot;&gt;уроки&lt;/a&gt;, представленные на сайте &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;. И подумалось мне, почему бы не поделиться переводом с другими людьми? Сказано — сделано, и ниже пойдёт перевод 1-го урока по &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;. Если у вас есть желание, то вы всегда можете &lt;a href=&quot;http://pushbuttonengine.com/docs/Lesson-01-FlashDevelop.html&quot; class=&quot;bb-url&quot;&gt;ознакомиться с уроком в оригинале&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;PushButton Engine Lesson #1 - настройка FlashDevelop&lt;/h3&gt;&lt;br /&gt;
Привет, в этом уроке вы узнаете как можно использовать PushButton Engine с &lt;a href=&quot;http://flashist.ru/news/i-love-flashdevelop-ili-nemnogo-o-snippetakh-v-flashdevelop&quot; class=&quot;bb-url&quot;&gt;FlashDevelop&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Содержание:&lt;/span&gt;&lt;br /&gt;
- Требования к уроку&lt;br /&gt;
- Настройка FlashDevelop&lt;br /&gt;
- Создание нового проекта&lt;br /&gt;
- Библиотека&lt;br /&gt;
- Исходники&lt;br /&gt;
- Hello, World!&lt;br /&gt;
- Обзор&lt;br /&gt;
- Заключение&lt;br /&gt;
- Файлы&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Требования к уроку:&lt;/span&gt;&lt;br /&gt;
Для того, чтобы выполнить этот урок, вам нужно скачать и установить несколько программ:&lt;br /&gt;
1) Adobe Flash 10 Project Content Debugger - &lt;a href=&quot;http://www.adobe.com/support/flashplayer/downloads.html&quot; class=&quot;bb-url&quot;&gt;Скачать&lt;/a&gt;&lt;br /&gt;
2) Adobe Flash 10 Debug Player - &lt;a href=&quot;http://www.adobe.com/support/flashplayer/downloads.html&quot; class=&quot;bb-url&quot;&gt;Скачать&lt;/a&gt; - &lt;a href=&quot;http://www.adobe.com/support/flashplayer/downloads.html&quot; class=&quot;bb-url&quot;&gt;Установка&lt;/a&gt;&lt;br /&gt;
3) Adobe Flex 3 SDK - &lt;a href=&quot;http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk&quot; class=&quot;bb-url&quot;&gt;Скачать&lt;/a&gt; - Чтобы установить, просто распакуйте архив в нужную директорию.&lt;br /&gt;
4) FlashDevelop - &lt;a href=&quot;http://www.flashdevelop.org/community/viewforum.php?f=11&quot; class=&quot;bb-url&quot;&gt;Скачать&lt;/a&gt; - &lt;a href=&quot;http://www.flashdevelop.org/wikidocs/index.php?title=Installation&quot; class=&quot;bb-url&quot;&gt;Установка&lt;/a&gt;&lt;br /&gt;
5) PushButton Engine - &lt;a href=&quot;http://pushbuttonengine.com/download/&quot; class=&quot;bb-url&quot;&gt;Скачать&lt;/a&gt; - Чтобы установить, просто распакуйте архив в нужную директорию.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;h3&gt;Настройка FlashDevelopх&lt;/h3&gt;&lt;br /&gt;
Когда вы запустите &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt; в первый раз после установки, вам необходимо будет указать путь к &lt;span style=&quot;font-weight:bold&quot;&gt;Flex SDK&lt;/span&gt;. Для того, чтобы сделать это вам необходимо зайти в меню программы &lt;span style=&quot;font-weight:bold&quot;&gt;Tools-&amp;gt;Program Settings&lt;/span&gt;, в открывшемся окне необходимо будет выбрать пункт &lt;span style=&quot;font-weight:bold&quot;&gt;AS3Context&lt;/span&gt; и кликнуть на нём. В списке параметров (ближе к концу списка) нужно будет найти пункт &lt;span style=&quot;font-weight:bold&quot;&gt;«Flex SDK Location»&lt;/span&gt; (см. скриншот). Тут необходимо будет вписать путь или выбрать в окне проводника нужную папку с &lt;span style=&quot;font-weight:bold&quot;&gt;Flex SDK&lt;/span&gt; (та папка, куда вы распаковали &lt;span style=&quot;font-weight:bold&quot;&gt;Flex SDK&lt;/span&gt; архив).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-1/Lesson1FlashDevelop_1.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Теперь &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt; готов к разработке &lt;span style=&quot;font-weight:bold&quot;&gt;ActionScript&lt;/span&gt; или &lt;span style=&quot;font-weight:bold&quot;&gt;Flex&lt;/span&gt; приложений.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Создание нового проекта&lt;/h3&gt;&lt;br /&gt;
Теперь нам нужно настроить проект для урока. Кликните в меню на пункт &lt;span style=&quot;font-weight:bold&quot;&gt;Project-&amp;gt;New Project&lt;/span&gt;. У вас откроется окно с различными типами проектов для &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt;. Для этого урока нам необходимо создать &lt;span style=&quot;font-weight:bold&quot;&gt;AS3 Project&lt;/span&gt; (выберите этот пунект в списке типов проектов). Назовите его &lt;span style=&quot;font-weight:bold&quot;&gt;Lesson1FlashDevelop&lt;/span&gt; и укажите нужную папку. Можно нажимать OK и двигаться дальше =)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-1/Lesson1FlashDevelop_2.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Теперь мы должны задаться вопросом: «планируем ли мы использовать &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt; как есть или мы будем изменять исходный код &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;».&lt;/p&gt;

&lt;p&gt;Если вы планируете использовать &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt; как есть, то пропустите раздел &lt;span style=&quot;font-weight:bold&quot;&gt;«Исходники»&lt;/span&gt; и перейдите к разделу &lt;span style=&quot;font-weight:bold&quot;&gt;«Библиотека»&lt;/span&gt;. прим. переводчика: «в принципе, если вы не знакомы с азами работы &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt;, то ничего плохого в прочтении раздела „Исходники“ не будет в любом случае, даже если вы планируете править исходники &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;».&lt;/p&gt;

&lt;p&gt;Если вы планируете работать с исходным кодом &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;, то пропустите раздел &lt;span style=&quot;font-weight:bold&quot;&gt;«Библиотека»&lt;/span&gt; и перейдите к разделу &lt;span style=&quot;font-weight:bold&quot;&gt;«Исходники»&lt;/span&gt;. прим. переводчика: «как и в предыдущем случае, если вы не очень знакомы с &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt;, то вам будет только на пользу прочитать раздел „Библиотека“».&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Библиотека&lt;/h3&gt;&lt;br /&gt;
С нашими текущими настройками мы можем начать разработку «чистого» &lt;span style=&quot;font-weight:bold&quot;&gt;ActionScript&lt;/span&gt; или &lt;span style=&quot;font-weight:bold&quot;&gt;Flex&lt;/span&gt;, на выбор. В этом уроке мы будем создавать «чистый» ActionScript проект, но вам ничего не мешает создать &lt;span style=&quot;font-weight:bold&quot;&gt;Flex&lt;/span&gt; проект. Чтобы использовать &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt; нам нужно указать ссылку на файл &lt;span style=&quot;font-weight:bold&quot;&gt;PBEngine.swc&lt;/span&gt; в нашем проекте. Так давайте сделаем это сейчас!&lt;/p&gt;

&lt;p&gt;Откройте папку, в которую вы распаковали &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;. Найдите папку Bin, в ней нужно найти файл &lt;span style=&quot;font-weight:bold&quot;&gt;PBEngin.swc&lt;/span&gt; и скопировать его в папку lib внутри созданного &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt; проекта.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-1/Lesson1FlashDevelop_3.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Далее вам нужно будет открыть окно &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt;, в правой части окна вам нужно будет переключиться на вкладку &lt;span style=&quot;font-weight:bold&quot;&gt;«Project»&lt;/span&gt;, найдите в этой вкладке папку lib, а внутри ней скопированный файл &lt;span style=&quot;font-weight:bold&quot;&gt;FBEngine.swc&lt;/span&gt;, кликните на нём правой кнопкой и выберите пункт &lt;span style=&quot;font-weight:bold&quot;&gt;«Add To Library»&lt;/span&gt;. Этим действием мы каг-бэ говорим &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt;, что мы хотим использовать данную .swc библиотеку в нашем проекте.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-1/Lesson1FlashDevelop_4.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-1/Lesson1FlashDevelop_5.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Исходники&lt;/h3&gt;&lt;br /&gt;
Для того, чтобы наш &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt; проект мог работать с исходниками &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;, нужно указать путь к исходным файлам &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;. Кликните правой кнопкой мыши на названии вашего проекта во вкладке &lt;span style=&quot;font-weight:bold&quot;&gt;«Project»&lt;/span&gt;, обычно название находится в самом верху, и выберите пункт &lt;span style=&quot;font-weight:bold&quot;&gt;«Properties»&lt;/span&gt;. В открытом окне нужно перейти на вкладку &lt;span style=&quot;font-weight:bold&quot;&gt;«Classpath»&lt;/span&gt;, в ней нужно будет нажать на кнопку &lt;span style=&quot;font-weight:bold&quot;&gt;«Add Classpath…»&lt;/span&gt; и в диалоговом окне указать путь к папке src, которая находится в папке с разархивированными файлами &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-1/Lesson1FlashDevelop_6.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Теперь нам нужно установить несколько настроек компилятора для работы с &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;. Для этого кликните правой кнопкой мыши на названии вашего проекта во вкладке &lt;span style=&quot;font-weight:bold&quot;&gt;«Project»&lt;/span&gt;, выберите пункт «Properties» и перейдите на вкладку &lt;span style=&quot;font-weight:bold&quot;&gt;«Compiler Options»&lt;/span&gt;. Далее в строку &lt;span style=&quot;font-weight:bold&quot;&gt;«Additional Compiler Options»&lt;/span&gt; необходимо добавить строку &lt;span style=&quot;font-weight:bold&quot;&gt;«--keep-as3-metadata+=TypeHint,EditorData,Embed»&lt;/span&gt; (без кавычек) и нажать &lt;span style=&quot;font-weight:bold&quot;&gt;OK&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-1/Lesson1FlashDevelop_7.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Hello, World!&lt;/h3&gt;&lt;br /&gt;
Всё клёво =) Теперь настало время для написания кода!&lt;/p&gt;

&lt;p&gt;В окне &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt; кликните на вкладке &lt;span style=&quot;font-weight:bold&quot;&gt;«Project»&lt;/span&gt;, если она ещё не открыта. В папке src будет находиться файл &lt;span style=&quot;font-weight:bold&quot;&gt;Main.as&lt;/span&gt; (он создаётся автоматически &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt;). Кликните по нему правйо кнопкой мышки и переименуйте его в &lt;span style=&quot;font-weight:bold&quot;&gt;Lesson1FlashDevelop.as&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-1/Lesson1FlashDevelop_8.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Далее вам нужно будет открыть переименованный файл и удалить всё его текстовое содержимое, заменив на:&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;// ...
package
{
  // Flash Imports
  import flash.display.Sprite;
  
  // PushButton Engine Imports
  import com.pblabs.engine.PBE;
  import com.pblabs.engine.debug.Logger;
     
  public class Lesson1FlashDevelop extends Sprite
  {
    public function Lesson1FlashDevelop():void
    {
      PBE.startup(this);
      Logger.print(this, &quot;Hello, World!&quot;);
    }
  }   
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Этот код представляет собой минимальное приложение для &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;. Когда мы скомпилируем приложение (&lt;span style=&quot;font-weight:bold&quot;&gt;Ctrl+Enter&lt;/span&gt;) в панеле &lt;span style=&quot;font-weight:bold&quot;&gt;«Output»&lt;/span&gt; должно будет появиться примерно следующее сообщение:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;bb-code&quot;&gt;INFO: Lesson1FlashDevelop - Hello, World!&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Так давайте же скомпилируем флешку и протестируем всё. Нажмите на пункт меню &lt;span style=&quot;font-weight:bold&quot;&gt;Project-&amp;gt;Test movie&lt;/span&gt; (или &lt;span style=&quot;font-weight:bold&quot;&gt;Cntr+Enter&lt;/span&gt;) и, если мы не допустили ошибок, у нас должно будет появиться сообщение во вкладке &lt;span style=&quot;font-weight:bold&quot;&gt;«Output»&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-1/Lesson1FlashDevelop_9.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Обзор&lt;/h3&gt;&lt;br /&gt;
Итак, кратко перечислим необходимые действия, для создания минимального приложения:&lt;br /&gt;
1) Создать новый &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt; проект (&lt;span style=&quot;font-weight:bold&quot;&gt;Project-&amp;gt;New Project&lt;/span&gt;).&lt;br /&gt;
2) В качестве типа проекта необходимо указать &lt;span style=&quot;font-weight:bold&quot;&gt;AS3 Project&lt;/span&gt;.&lt;br /&gt;
3.а) Чтобы начать работу с .swc библиотекой &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;, вам нужно скопировать файл &lt;span style=&quot;font-weight:bold&quot;&gt;PBEngine.swc&lt;/span&gt; в папку lib вашего проекта. После этого нужно будет кликнуть правой кнопкой мышки по .swc файл и выбрать пункт &lt;span style=&quot;font-weight:bold&quot;&gt;«Add To Library»&lt;/span&gt;.&lt;br /&gt;
3.б) Чтобы начать работу с исходниками &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;, необходимо указать путь к папке src, внутри папки, куда вы разархивировали &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;, а так же задать настройки компилятора в настройках &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt; проекта.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Заключение&lt;/h3&gt;&lt;/p&gt;

&lt;p&gt;Поздравляем вас! Вы только что завершили урок #1 и знаете, как создавать проекты для работы с &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton engine&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Знания, полученные в данном уроке помогут вам в выполнении будущих уроков.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Файлы&lt;/h3&gt;&lt;br /&gt;
Вы можете скачать все файлы, которые использовались в уроке по ссылке ниже.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-1/Lesson1Base.zip&quot; class=&quot;bb-url&quot;&gt;Архив с исходниками урока&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;От переводчика&lt;/h3&gt;&lt;br /&gt;
Вот и закончился первый урок. Надеюсь, это будет хорошим началом к изучению &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;. Если вы, пока ещё, не имеете опыта работы с &lt;span style=&quot;font-weight:bold&quot;&gt;FlashDevelop&lt;/span&gt;, то, думаю, что вам будет полезно ознакомиться со &lt;a href=&quot;http://flashist.ru/lessons/sozdanie-flash-prilozhenii-v-flashdevelop&quot; class=&quot;bb-url&quot;&gt;статьёй про создание Flash приложений в FlashDevelop&lt;/a&gt;.&lt;/p&gt;</description>
 <comments>http://www.flashist.ru/lessons/pushbutton-engine-urok-1#comments</comments>
 <category domain="http://www.flashist.ru/taxonomy/term/99">AS3</category>
 <category domain="http://www.flashist.ru/taxonomy/term/4">Flash</category>
 <category domain="http://www.flashist.ru/taxonomy/term/108">PushButton Engine</category>
 <category domain="http://www.flashist.ru/taxonomy/term/14">Игры</category>
 <category domain="http://www.flashist.ru/taxonomy/term/91">урок</category>
 <category domain="http://www.flashist.ru/taxonomy/term/109">Фреймворк</category>
 <pubDate>Fri, 18 Jun 2010 15:47:58 +0400</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">312 at http://www.flashist.ru</guid>
</item>
<item>
 <title>PushButton Engine Урок #2</title>
 <link>http://www.flashist.ru/lessons/pushbutton-engine-urok-2</link>
 <description>&lt;p&gt;Сегодня мы продолжим изучать &lt;a href=&quot;http://pushbuttonengine.com/&quot; class=&quot;bb-url&quot;&gt;PushButton Engine&lt;/a&gt; (PBE) и узнаем, как в &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt; создавать свои объекты и компоненты. Статья является переводом &lt;a href=&quot;http://pushbuttonengine.com/docs/Lesson-02.html&quot; class=&quot;bb-url&quot;&gt;2-го официального урока по PushButton Engine&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;PushButton Engine Урок #2: добавление простой фигуры&lt;/h3&gt;&lt;br /&gt;
&lt;span style=&quot;font-style:italic&quot;&gt;&quot;Чем выше должно быть ваше здание, тем ниже должно быть его основание.&quot; - Святой Августин&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Цель этого урока, научить пользователей добавлять простые фигуры, которые будут отрисовываться на экране.&lt;/p&gt;

&lt;p&gt;Данный урок состоит из серии шагов: маленьких промежутков, которые будут фокусироваться на достижении небольших целей. Такой подход позволит ускорить процесс понимания &lt;span style=&quot;font-weight:bold&quot;&gt;PusButton Engine (PBE)&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Содержание:&lt;/span&gt;&lt;br /&gt;
- Файлы для начала урока&lt;br /&gt;
- Загрузка начального проекта&lt;br /&gt;
- Редактирование наших исходных файлов&lt;br /&gt;
- Заценить это всё в действии&lt;br /&gt;
- Обзор&lt;br /&gt;
- Заключение&lt;br /&gt;
 &lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Файлы для начала урока&lt;/h3&gt;&lt;br /&gt;
Чтобы начать изучение урока, вы можете скачать стартовый проект и использовать его, как базу для выполнения урока:&lt;br /&gt;
&lt;span style=&quot;font-weight:bold&quot;&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-2/Lesson2Base-start-kit.zip&quot; class=&quot;bb-url&quot;&gt;Набор для начала изучения урока&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Исходные файлы выполненного урока будут доступны в конце статьи.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Загрузка начального проекта&lt;/h3&gt;&lt;br /&gt;
Опираясь на &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-1&quot; class=&quot;bb-url&quot;&gt;Урок #1&lt;/a&gt; вам нужно будет распаковать содержимое архива в нужную папку и убедиться, что проект компилируется у вас. Это даст вам «базовый» проект, с которым вы сможете дальше работать.&lt;/p&gt;

&lt;p&gt;Теперь мы можем приступить к настройке простой сцены &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;, а так же добавить на сцену круг, который будет отрисовываться в центре.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Редактирование наших исходных файлов&lt;/h3&gt;&lt;br /&gt;
На первый взгляд, наш проект выглядит, как обычный &lt;span style=&quot;font-weight:bold&quot;&gt;Flash&lt;/span&gt; проект без содержимого.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Путь к файлу: /src/Level2Base.as&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;[SWF(width=&quot;800&quot;, height=&quot;600&quot;, frameRate=&quot;60&quot;)]
public class Lesson2Base extends Sprite
{
	public function Lesson2Base()
	{
		// Запускаем работу PBE
		PBE.startup(this);
	}
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;В этом примере мы добавим все наши объекты и компоненты «вручную». &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt; обладает клёвыми инструментами для создания уровней в &lt;span style=&quot;font-weight:bold&quot;&gt;XML&lt;/span&gt; и загрузки их, но в целях упрощения, в этом уроке мы будем создавать наши объекты и компоненты средствами &lt;span style=&quot;font-weight:bold&quot;&gt;ActionScript&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Обычно, в рамках &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt;, объекты, не обладают большой функциональностью. В контексте игры они (объекты) изменяют свои свойства и реализуют поведение через компоненты. Компоненты представляют собой модульные блоки, которые добавляют к объектам фрагменты функциональности. Обычно компоненты могут быть сгруппированы и повторно использованы.&lt;/p&gt;

&lt;p&gt;В текущем уроке мы добавим 2 объекта, каждый из которых будет обладать 2-мя компонентами. Первым объектом будет наша сцена, а вторым — наш герой.&lt;/p&gt;

&lt;p&gt;Давайте продолжим редактирование исходного файла:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Путь к файлу: /src/Level2Base.as&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;[SWF(width=&quot;800&quot;, height=&quot;600&quot;, frameRate=&quot;60&quot;)]
public class Lesson2Base extends Sprite
{
	public function Lesson2Base()
	{
		// Запускаем работу PBE
		PBE.startup(this);
		
		// Создаём сцену
		this.createScene();
		// Создаём героя
		this.createHero();
	}
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;В начале мы настроем &lt;span style=&quot;font-weight:bold&quot;&gt;SceneView&lt;/span&gt;, который представляет собой «полотно», на котором будут отрисовываться объекты, созданные на сцене.&lt;/p&gt;

&lt;p&gt;Теперь мы создадим саму сцену (&lt;span style=&quot;font-weight:bold&quot;&gt;Scene&lt;/span&gt;), через вызов вспомогательной функции &lt;span style=&quot;font-weight:bold&quot;&gt;PBE.initializeScene&lt;/span&gt;:&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;/**
 * Создание сцены.
 */
private function createScene():void 
{
	// Создание сцены
	var sceneView:SceneView = new SceneView();
	sceneView.width = 800;
	sceneView.height = 600;
	
	// Это вспомогательная функция, которая настроит простую сцену
	PBE.initializeScene(sceneView);
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Теперь мы создадим объект героя. Объект героя, так же как и объект сцены, будет обладать 2-мя компонентами.&lt;/p&gt;

&lt;p&gt;Первый компонент является пространственным компонентом: он «рассказывает» пространственному менеджеру, где находится объект&lt;/p&gt;

&lt;p&gt;Второй компонент — это компонент рендера (отрисовки): она регистрирует самого себя в менеджере рендера и «говорит» менеджеру, как объект должен быть показан на экране. В текущем уроке мы будем использовать простое изображение круга, но &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt; предоставляет гораздо больше возможностей.&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;/**
 * Создание объекта героя.
 */
private function createHero():void
{
	// Создание объекта для аватара героя
	var hero:IEntity = PBE.allocateEntity();
	
	// Создание «пространственного» компонента
	var spatial:SimpleSpatialComponent = new SimpleSpatialComponent();
	
	// Установка пространственного положения героя в координаты 0,0
	spatial.position = new Point(0,0);
	// Установка размеров героя в 50,50
	spatial.size = new Point(50,50);
	spatial.spatialManager = PBE.spatialManager;
	
	// Добавление к герою пространственного компонента под именем &quot;Spatial&quot;
	hero.addComponent(spatial, &quot;Spatial&quot;);
	
	// Создание и настройка рендера для отображения объекта
	var render:SimpleShapeRenderer = new SimpleShapeRenderer();
	render.fillColor = 0x0000FF0;
	render.isCircle = true;
	render.lineSize = 2;
	render.radius = 25;
	render.lineColor = 0x000000;
	// Привязка компонента рендера к конкретной сцене
	render.scene = PBE.scene;
	
	// «Связывание» компонента рендера с объектом пространственного компонента, для получения информации о положении
	render.positionProperty = new PropertyReference(&quot;@Spatial.position&quot;);
	// «Связывание» компонента рендера с объектом пространственного компонента, для получения информации о вращении
	render.rotationProperty = new PropertyReference(&quot;@Spatial.rotation&quot;);
	
	// Добавление к герою компонента рендера под именем &quot;Render&quot;
	hero.addComponent(render, &quot;Render&quot;);
	
	// Регистрация объекта под именем &quot;Hero&quot;
	hero.initialize(&quot;Hero&quot;);
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Мы уже многого добились! Если вы сейчас скомпилируете проект, вы должны будете увидеть объект на экране!&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Заценить это всё в действии&lt;/h3&gt;&lt;br /&gt;
После компиляции у вас должен будет появиться &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; файл, похожий на представленный ниже (кликните, чтобы открыть в новом окне):&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-2/Lesson2Base.swf&quot; class=&quot;bb-url&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-2/PushButton-Lesson-2-screenshot-1.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Обзор&lt;/h3&gt;&lt;br /&gt;
Итак, теперь мы знаем, что для того, чтобы создать объект с помощью ActionScript, нужно использовать следующий код:&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;// Создаём сущность
var newEntity:IEntity = PBE.allocateEntity();

// Добавляем компоненты и устанавливаем свойства (код пропущен)

// Ригистрируем объект в PBE под именем &quot;EntityName&quot;
newEntity.intialize(&quot;EntityName&quot;);&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Для создания компонентов с помощью ActionScript потребуется написать немного больше кода&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;// Создаём новый компонент
var newComponent:IEntityComponent = new WhateverComponent();
// Устанавливаем настройки компонента
newComponent.field = value;
// Добавляем компонент к объекту под именем &quot;TheComponentName&quot;
newEntity.addComponent(newComponent, &quot;TheComponentName&quot;);

// Повторяем эти действия для каждого компонента и его свойств&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Заключение&lt;/h3&gt;&lt;br /&gt;
Ура! Вы только что завершили урок #2. В ходе этого урока вы добавили свои первые объекты и компоненты в игру и увидели результаты своей работы! Будущие уроки будут более сложными, но мы надеемся, что уроки помогут вам разобраться с &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;При желании, вы можете скачать файлы, которые были созданы в ходе написания данного урока:&lt;br /&gt;
&lt;a href=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-2/Lesson2Base.zip&quot; class=&quot;bb-url&quot;&gt;Архив с исходниками урока&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;От переводчика&lt;/h3&gt;&lt;br /&gt;
Перевод второго урока подошёл к концу, не могу сказать, что этот урок, в купе с &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-1&quot; class=&quot;bb-url&quot;&gt;уроком #1&lt;/a&gt; рассказал нам много про &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt;, но, надеюсь, дальше будет интереснее и мы поймём все прелести работы с &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt;.&lt;/p&gt;</description>
 <comments>http://www.flashist.ru/lessons/pushbutton-engine-urok-2#comments</comments>
 <category domain="http://www.flashist.ru/taxonomy/term/99">AS3</category>
 <category domain="http://www.flashist.ru/taxonomy/term/4">Flash</category>
 <category domain="http://www.flashist.ru/taxonomy/term/108">PushButton Engine</category>
 <category domain="http://www.flashist.ru/taxonomy/term/14">Игры</category>
 <category domain="http://www.flashist.ru/taxonomy/term/91">урок</category>
 <category domain="http://www.flashist.ru/taxonomy/term/109">Фреймворк</category>
 <pubDate>Wed, 23 Jun 2010 17:28:21 +0400</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">316 at http://www.flashist.ru</guid>
</item>
<item>
 <title>PushButton Engine Урок #3</title>
 <link>http://www.flashist.ru/lessons/pushbutton-engine-urok-3</link>
 <description>&lt;p&gt;&lt;h3&gt;Добавление управления к пользовательскому компоненту&lt;/h3&gt;&lt;br /&gt;
&lt;span style=&quot;font-style:italic&quot;&gt;«Если вы не контролируете свой разум, кто-то другой делает это.» — John Allston&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;В ходе этого урока мы добавим пользовательский компонент, который будет передвигать простую заливку по экрану. Если вы только начали изучение &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine (PBE)&lt;/span&gt;, то, возможно, вам будет полезно прочитать &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-1&quot; class=&quot;bb-url&quot;&gt;урок #1&lt;/a&gt; и &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-2&quot; class=&quot;bb-url&quot;&gt;урок #2&lt;/a&gt; из серии уроков про &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt;. Так же вы всегда можете прочитать уроки в &lt;a href=&quot;http://pushbuttonengine.com/docs/#Lessons&quot; class=&quot;bb-url&quot;&gt;оригинальных статьях на официальном сайте&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Данный урок состоит из серии шагов: маленьких промежутков, которые будут фокусироваться на достижении небольших целей. Такой подход позволит ускорить процесс понимания &lt;span style=&quot;font-weight:bold&quot;&gt;PusButton Engine (PBE)&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Этот урок будет полезен вам, если вы только начинаете изучать &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt;. Но, несмотря на это, не обязательно, чтобы вы были новичком в программировании.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Содержание:&lt;/span&gt;&lt;br /&gt;
- Файлы для начала урока&lt;br /&gt;
- Вступление к уроку&lt;br /&gt;
- Создание компонента&lt;br /&gt;
- Коннектимся&lt;br /&gt;
- Заценить это всё в действии&lt;br /&gt;
- Заключение&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Файлы для начала урока&lt;/h3&gt;&lt;br /&gt;
Чтобы начать изучение урока, вы можете скачать стартовый проект и использовать его, как базу для выполнения урока:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-3/Lesson3Base-start-kit.zip&quot; class=&quot;bb-url&quot;&gt;Набор для начала изучения урока&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Если вы скомпилируете .swf файл из стартового набора для урока, то у вас должен будет появиться голубой круг в левом-верхнем углу флешки.&lt;/p&gt;

&lt;p&gt;Исходные файлы выполненного урока будут доступны в конце статьи.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Вступление к уроку&lt;/h3&gt;&lt;br /&gt;
Одна из сильных вещей &lt;span style=&quot;font-weight:bold&quot;&gt;PushButton Engine&lt;/span&gt; заключается в гибком способе добавления компонентов и функциональности в игру. В этом уроке мы создадим относительно простой компонент, для создания движения. В будущем, уроки будут иметь дело с пользовательскими событиями ввода и отслеживанием столкновений, но в этом уроке в этом уроке мы будем стараться оставлять вещи относительно простыми.&lt;/p&gt;

&lt;p&gt;«Начальный» набор для этого урока очень похож на результат &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-2&quot; class=&quot;bb-url&quot;&gt;урока #2&lt;/a&gt;, за исключением того, что шар сдвинут в левый верхний угол экрана, а точнее в координаты &lt;span style=&quot;font-weight:bold&quot;&gt;x=-375&lt;/span&gt; и &lt;span style=&quot;font-weight:bold&quot;&gt;y=-275&lt;/span&gt;. Мы передвинули шар в эти координаты для того, чтобы он находился в левом-верхнем углу флешки. Обратите внимание на картинку, демонстрирующую систему координат нашей флешки.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-3/Lesson3-scheme.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Создание компонента&lt;/h3&gt;&lt;br /&gt;
Так же, как и в предыдущем уроке, мы настроем простую сцену. Объект героя будет иметь 3 компонента: компонент рендера, «пространственный» компонент и компонент-контроллер (&lt;span style=&quot;font-weight:bold&quot;&gt;DemoControllerComponent&lt;/span&gt;). Компонент-контроллер будет добавлять зигзагообразное движение к объекту шара, нечто подобное вы могли видеть в игре &lt;span style=&quot;font-weight:bold&quot;&gt;Space Invanders&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Для начала, нам нужно будет создать класс для нового компонента. Для того, чтобы наш новый компонент обладал базовыми свойствами компонентов, мы расширим класс для нового компонента от одного из стандартных классов. В качестве стандартного компонента, свойства которого мы будем использовать в этом примере, был выбран класс &lt;span style=&quot;font-weight:bold&quot;&gt;TickedComponent&lt;/span&gt;. Компоненты, которые будут расширены от класса &lt;span style=&quot;font-weight:bold&quot;&gt;TickedComponent&lt;/span&gt; «получат» метод &lt;span style=&quot;font-weight:bold&quot;&gt;onTick()&lt;/span&gt;, который будет вызываться 30 раз в секунду. Мы расположим логику передвижения в методе &lt;span style=&quot;font-weight:bold&quot;&gt;onTick()&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Итак, каждые 33 миллисекунды, метод &lt;span style=&quot;font-weight:bold&quot;&gt;onTick()&lt;/span&gt; будет вызываться в компоненте-контроллере. Этот метод будет «смотреть» на положение родительского объекта (позиция будет получена из «пространственного» компонента), и потом добавлять небольшие изменения, для того, чтобы создать простое передвижение. Логика работы у компонента-контроллера будет следующей:&lt;/p&gt;

&lt;p&gt;1) Если мы находимся в левом углу флешки:&lt;br /&gt;
1.1) Начать двигаться вправо.&lt;br /&gt;
1.2) Сдвинуть вниз.&lt;/p&gt;

&lt;p&gt;2) Если мы находимся в правом углу флешки:&lt;br /&gt;
2.2) Начать двигаться влево.&lt;br /&gt;
2.3) Сдвинуть вниз.&lt;/p&gt;

&lt;p&gt;3) В других случаях продолжаем двигаться в том направлении, в котором двигаемся сейчас.&lt;/p&gt;

&lt;p&gt;Теперь, когда у нас есть план действий, нам нужно внедрить всё это в наш проект. Создайте новый файл в директории исходников вашего проекта, назовите его &lt;span style=&quot;font-weight:bold&quot;&gt;DemoControllerComponent.as&lt;/span&gt; и скопируйте в него следующий код:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Путь к файлу: /src/DemoControllerComponent.as&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;package 
{
	import com.pblabs.engine.components.TickedComponent;
	import com.pblabs.engine.entity.PropertyReference;

	import flash.geom.Point;

	// Создание TicketComponent, который может обновлять себя на каждом кадре с помощью метода onTick()
	public class DemoControllerComponent extends TickedComponent
	{
		// Переменная, котораябудет сохранять ссылку на переменную положения объекта
		public var positionReference:PropertyReference;
		
		// Переменная, которая будет запоминать направление движения объекта
		// 1 означает движение вправо, -1 означает движение влево
		private var direction:int = 1;
		
		public function DemoControllerComponent()
		{
			
		}
		
		// Метод onTick() будет вызываться каждый кадр
		public override function onTick(tickRate:Number):void
		{
			// Копируем позицию родительского объекта
			var position:Point = owner.getProperty(positionReference);
			
			// Если мы вышли за левый край экрана
			if (position.x &amp;lt; -375)
			{
				// Начинаем передвижение вправо
				direction = 1;
				
				// Сдвигаем объект вниз
				position.y += 20;
				
			// Если мы вышли за правый край флешки
			}else if (position.x &amp;gt; 375)
			{
				// Начинаем передвижение влево
				direction = -1;
				
				// Сдвигаем объект вниз
				position.y += 20;
			}
			
			// Изменяем координату по X в том направлении, в котором мы движемся
			position.x += direction * 5;
			
			// Устанавливаем положение «пространственного» объекта в соответствии с найденным положением
			owner.setProperty(positionReference, position);
		}
	}
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Теперь, когда мы создали новый компонент, наступило время для того, чтобы добавить его в нашу игру! Мы добавляем компонент-контроллер таким же способом, как добавлялись другие компоненты в &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-2&quot; class=&quot;bb-url&quot;&gt;уроке #2&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;В конце метода &lt;span style=&quot;font-weight:bold&quot;&gt;createHero()&lt;/span&gt;, сразу за последним вызовом метода &lt;span style=&quot;font-weight:bold&quot;&gt;hero.addComponent()&lt;/span&gt;, нужно добавить следующие строчки кода:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Путь к файлу: /src/Lesson3Base.as&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;// Создание компонента-контроллера
var controller:DemoControllerComponent = new DemoControllerComponent();
// Связывание компонента-контроллера с объектом. Связывание компонента-контроллера
// с информацией о положении объекта через «пространственный» компонент
controller.positionReference = new PropertyReference(&quot;@Spatial.position&quot;);

// Добавление компонента-контроллера к объекту героя под именем &quot;Controller&quot;
hero.addComponent( controller, &quot;Controller&quot;);&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Мы закончили создание нового контроллера с именем &lt;span style=&quot;font-weight:bold&quot;&gt;DemoControllerComponent&lt;/span&gt;, а так же подключение его к объекту и связывание его с «пространственным» компонентом объекта.&lt;/p&gt;

&lt;p&gt;Вот и всё! Теперь нам ничего не мешает скомпилировать и запустить флешку.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Заценить это всё в действии&lt;/h3&gt;&lt;br /&gt;
После компиляции вы должны будете увидеть &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; файл, похожий на скриншот ниже:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-3/Lesson3-shot-1.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Заключение&lt;/h3&gt;&lt;br /&gt;
Поздравляем!!! Вы завершили &lt;span style=&quot;font-weight:bold&quot;&gt;урок #3&lt;/span&gt;, создали свой первый пользовательский компонент и увидели его работу в действии.&lt;/p&gt;

&lt;p&gt;Вы можете скачать все файлы, которые использовались в уроке по ссылке ниже.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-3/Lesson3Base.zip&quot; class=&quot;bb-url&quot;&gt;Архив с исходниками урока&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
 <comments>http://www.flashist.ru/lessons/pushbutton-engine-urok-3#comments</comments>
 <category domain="http://www.flashist.ru/taxonomy/term/99">AS3</category>
 <category domain="http://www.flashist.ru/taxonomy/term/4">Flash</category>
 <category domain="http://www.flashist.ru/taxonomy/term/108">PushButton Engine</category>
 <category domain="http://www.flashist.ru/taxonomy/term/14">Игры</category>
 <category domain="http://www.flashist.ru/taxonomy/term/91">урок</category>
 <category domain="http://www.flashist.ru/taxonomy/term/109">Фреймворк</category>
 <pubDate>Thu, 01 Jul 2010 00:27:35 +0400</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">319 at http://www.flashist.ru</guid>
</item>
<item>
 <title>PushButton Engine Урок #4</title>
 <link>http://www.flashist.ru/lessons/pushbutton-engine-urok-4</link>
 <description>&lt;p&gt;В сегодняшнем уроке мы разберём, как в PushButton Engine можно создавать объекты, управляемые клавиатурой. Если вы только начали изучение PushButton Engine (PBE), то, возможно, вам будет полезно прочитать &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-1&quot; class=&quot;bb-url&quot;&gt;урок #1&lt;/a&gt;, &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-2&quot; class=&quot;bb-url&quot;&gt;урок #2&lt;/a&gt; и &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-3&quot; class=&quot;bb-url&quot;&gt;урок #3&lt;/a&gt; из серии уроков про PBE. Так же вы всегда можете прочитать уроки в оригинальных статьях на официальном сайте.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Управление с помощью клавиатуры&lt;/h3&gt;&lt;br /&gt;
&lt;span style=&quot;font-style:italic&quot;&gt;«Человеческие существа, овощи или космическая пыль, все мы танцуем под таинственную мелодию, которую на расстоянии играет невидимый музыкант.» — Альберт Эйнштейн.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Цель данного урока: научиться создавать пользовательские компоненты, которые используют клавиатуры для перемещения простой фигуры по экрану.&lt;/p&gt;

&lt;p&gt;Как и предыдущие уроки, данный урок состоит из серии шагов: маленьких промежутков, которые будут фокусироваться на достижении небольших целей. Такой подход позволит ускорить процесс понимания &lt;a href=&quot;http://pushbuttonengine.com/&quot; class=&quot;bb-url&quot;&gt;PusButton Engine&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Этот урок будет полезен вам, если вы только начинаете изучать &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt;. Но, несмотря на это, не обязательно, чтобы вы были новичком в программировании.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Содержание:&lt;/span&gt;&lt;br /&gt;
- Файлы для начала урока&lt;br /&gt;
- Вступление к уроку&lt;br /&gt;
- Создание компонента&lt;br /&gt;
- Проверка результатов работы&lt;br /&gt;
- Заключение&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Файлы для начала урока&lt;/h3&gt;&lt;br /&gt;
Чтобы начать изучение урока, вы можете скачать стартовый проект и использовать его, как базу для выполнения урока:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-4/Lesson4Base-start-kit.zip&quot; class=&quot;bb-url&quot;&gt;Набор для начала изучения урока&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Если вы скомпилируете &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; файл из стартнового набора для урока, то у вас должен будет появиться голубой круг в центре экрана.&lt;/p&gt;

&lt;p&gt;Исходные файлы выполненного урока будут доступны в конце статьи.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Вступление к уроку&lt;/h3&gt;&lt;br /&gt;
В последнем уроке мы научились создавать простой компонент-контроллер, который управляет персонажем, основываясь на поведенческой моделе. Теперь, мы добавим нажатия клавиатуры, которые будут добавлять движения, контролируемые игроком.&lt;/p&gt;

&lt;p&gt;Для того, чтобы упорядочить пользовательский ввод &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt; предоставляет метод &lt;span style=&quot;font-weight:bold&quot;&gt;PBE.isKeyDown()&lt;/span&gt;, который проверяет, нажата ли сейчас какая-нибудь кнопка.&lt;/p&gt;

&lt;p&gt;Для более сложных настроек ввода, таких как действия при сочетаниях клавиш или рассылка специальных событий для кнопок, &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt; предоставляет классы &lt;span style=&quot;font-weight:bold&quot;&gt;InputManager&lt;/span&gt; и &lt;span style=&quot;font-weight:bold&quot;&gt;InputMap&lt;/span&gt;. Эти классы предоставляют более «сильный» функционал, но, обычно, они не нужны при создании простых игр. В этом уроке мы не будем обсуждать их.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Создание компонента&lt;/h3&gt;&lt;br /&gt;
Так же, как и в предыдущем уроке мы опять создадим простую сцену с 3-мя простыми компонентами: компонент-рендера, «пространственный» компонент и компонент-контроллер. И, снова, мы создадим пользовательский компонент, который будет унаследован от класса &lt;span style=&quot;font-weight:bold&quot;&gt;TicketComponent&lt;/span&gt;, который обладает способностью «обновлять» себя на каждом кадре (см. &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-3&quot; class=&quot;bb-url&quot;&gt;урок #3&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Этот новый компонент будет проверять, нажаты ли кнопки влево или вправо, и, если какая-то из них будет нажата, компонент будет перемещать объект.&lt;/p&gt;

&lt;p&gt;Класс &lt;span style=&quot;font-weight:bold&quot;&gt;InputKey&lt;/span&gt; предоставляет возможность работы с большим количеством кнопок:&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;// Коды кнопок могут быть получены через статические константы класса InputKey
InputKey.LEFT
// Или с помощью строковых имён
InputKey.stringToKey(&quot;LEFT&quot;)&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;В корневой дирректории урока вы найдёте заготовку для класса &lt;span style=&quot;font-weight:bold&quot;&gt;HeroControllerComponent&lt;/span&gt;. Чтобы добавить реагирование на события клавиатуры, при каждом вызове метода &lt;span style=&quot;font-weight:bold&quot;&gt;onTick()&lt;/span&gt; мы будем запрашивать у &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt; проверку на нажате кнопок, нажатие которых нас интересует. Это можно сделать с помощью метода &lt;span style=&quot;font-weight:bold&quot;&gt;PBE.isKeyDown()&lt;/span&gt;, примерно следующим способом:&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;// Метод isKeyDown() возвращает булево значение, которое показывает, нажата сейчас проверяемая кнопка или нет (true — да, false — нет)
if (PBE.isKeyDown(InputKey.SPACE))
{
	// Реакция на нажатие клавиши
	Logger.print(this, &quot;Hey, cheer up!&quot;);
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;В зависимости от того, какая клавиша сейчас была нажата, мы изменяем положение пространсвтенного компонента. Так же, как и в предыдущем уроке, мы будем получать ссылку на пременную положения пространственного компонента через класс &lt;span style=&quot;font-weight:bold&quot;&gt;PropertyReference&lt;/span&gt;, вносить изменения в соответствии с нашими правилами и устанавливать новое значение для данной переменной.&lt;/p&gt;

&lt;p&gt;Правила, в соответствии с которыми мы будем изменять положение объекта:&lt;/p&gt;

&lt;p&gt;1) Если нажата клавиша «Вправо»: передвигаем объект вправо&lt;br /&gt;
2) Если нажата клавиша «Влево»: передвигаем объект влево&lt;br /&gt;
3) Если объект вышел за правый край флешки: возвращаем объект к правому краю флешки&lt;br /&gt;
4) Если объект вышел за левый край флешки: возвращаем объект к левому краю флешки&lt;/p&gt;

&lt;p&gt;Теперь, когда мы разобрали, как всё должно работать, мы можем реализовать это в коде. Измените класс &lt;span style=&quot;font-weight:bold&quot;&gt;HeroControllerComponent&lt;/span&gt; в соотвтествии с кодом, представленным ниже:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Путь к файлу: /src/HeroControllerComponent.as&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;package 
{
	import com.pblabs.engine.PBE;
	import com.pblabs.engine.components.TickedComponent;
	import com.pblabs.engine.core.InputKey;
	import com.pblabs.engine.entity.PropertyReference;

	import flash.geom.Point;
    
	/**
	 * Класс, который умеет «обновлять» себя на каждом кадре с помощью метода onTick()
	 */
    public class HeroControllerComponent extends TickedComponent
    {
		// Переменная, которая будет сохранять ссылку на положение объекта
        public var positionReference:PropertyReference;
		
		public function HeroControllerComponent()
		{
			
		}
		
		/**
		 * Функция, которая будет вызываться на каждом кадре.
		 * 
		 * @param	deltaTime время, прошедшее с предыдущего обновления.
		 */
        public override function onTick(deltaTime:Number):void
        {
			// Получаем ссылку на переменную положения объекта
			var position:Point = owner.getProperty(positionReference);
			
			// Проверяем, нажата ли кнопка «Вправо»
			if (PBE.isKeyDown(InputKey.RIGHT))
			{
				// Передвигаем объект вправо
				position.x += 15;
			}
			
			// Проверяем, нажата ли кнопка «Влево»
			if (PBE.isKeyDown(InputKey.LEFT))
			{
				// Передвигаем объект влево
				position.x -= 15;
			}
			
			// Если объект выходит вправо за пределы флешки
			if (position.x &amp;gt; 375)
			{
				// Возвращаем объект к правому краю
				position.x = 375;
				
			// Если объект выходит влево за пределы флешки
			}else if (position.x &amp;lt; -375)
			{
				// Возвращаем объект к левому краю
				position.x = -375;
			}
			
			// Устанавливаем положение объекта в соответствии с изменениями
			owner.setProperty(positionReference, position);
		}    
	}
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Проверка результатов работы&lt;/h3&gt;&lt;br /&gt;
После того, как вы скомпилируете флешку, вы должны будете увидеть &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; файл, содержимое которого должно быть похоже на скриншот ниже:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-4/Lesson4Base.swf&quot; class=&quot;bb-url&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-4/Lesson4-shot-1.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Заключение&lt;/h3&gt;&lt;br /&gt;
Поздравляем, вы завершили &lt;span style=&quot;font-weight:bold&quot;&gt;урок 4&lt;/span&gt; и научились добавлять реакции на пользвоательский ввод.&lt;/p&gt;

&lt;p&gt;Вы можете скачать все файлы, которые использовались в уроке по ссылке ниже.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-4/Lesson4Base.zip&quot; class=&quot;bb-url&quot;&gt;Архив с исходниками урока&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
 <comments>http://www.flashist.ru/lessons/pushbutton-engine-urok-4#comments</comments>
 <category domain="http://www.flashist.ru/taxonomy/term/99">AS3</category>
 <category domain="http://www.flashist.ru/taxonomy/term/4">Flash</category>
 <category domain="http://www.flashist.ru/taxonomy/term/108">PushButton Engine</category>
 <category domain="http://www.flashist.ru/taxonomy/term/14">Игры</category>
 <category domain="http://www.flashist.ru/taxonomy/term/91">урок</category>
 <category domain="http://www.flashist.ru/taxonomy/term/109">Фреймворк</category>
 <pubDate>Tue, 06 Jul 2010 23:09:15 +0400</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">323 at http://www.flashist.ru</guid>
</item>
<item>
 <title>PushButton Engine Урок #5</title>
 <link>http://www.flashist.ru/lessons/pushbutton-engine-urok-5</link>
 <description>&lt;p&gt;В сегодняшнем уроке мы разберём, какие инструменты для работы с изображениями предоставляет PushButton Engine. К слову, инструменты для встраивания изображений, которые предоставляются разработчиками PBE действительно выглядят очень удобными. Только пожалуйста, не забывайте указывать настройки компилятора, которые были описаны в &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-1&quot; class=&quot;bb-url&quot;&gt;уроке #1&lt;/a&gt;, иначе, у вас могут возникнуть проблемы с встраиванием графики в этом уроке.&lt;/p&gt;

&lt;p&gt;Если вы только начали изучение PushButton Engine (PBE), то, возможно, вам будет полезно прочитать &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-1&quot; class=&quot;bb-url&quot;&gt;урок #1&lt;/a&gt;, &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-2&quot; class=&quot;bb-url&quot;&gt;урок #2&lt;/a&gt;, &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-3&quot; class=&quot;bb-url&quot;&gt;урок #3&lt;/a&gt; и &lt;a href=&quot;http://flashist.ru/lessons/pushbutton-engine-urok-4&quot; class=&quot;bb-url&quot;&gt;урок #4&lt;/a&gt; из серии уроков про PBE. Так же вы всегда можете прочитать &lt;a href=&quot;http://pushbuttonengine.com/docs/&quot; class=&quot;bb-url&quot;&gt;официальные уроки на английском языке&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Использование и встраивание изображений&lt;/h3&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-style:italic&quot;&gt;«A novel is never anything but a philosophy put into images»&lt;/span&gt; - Альберт Камю (к сожалению, у меня не получилось найти перевод данной фразы =(&lt;/p&gt;

&lt;p&gt;Цель данного урока: научиться показывать изображения на экране и научиться добавлять их в проекты.&lt;/p&gt;

&lt;p&gt;Как и предыдущие уроки, данный урок состоит из серии шагов: маленьких промежутков, которые будут фокусироваться на достижении небольших целей. Такой подход позволит ускорить процесс понимания &lt;span style=&quot;font-weight:bold&quot;&gt;PusButton Engine (PBE)&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Этот урок будет полезен вам, если вы только начинаете изучать &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt;. Но, несмотря на это, не обязательно, чтобы вы были новичком в программировании.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Содержание:&lt;/span&gt;&lt;br /&gt;
- Файлы для начала урока&lt;br /&gt;
- Вступление к уроку&lt;br /&gt;
- Разбираемся, что к чему&lt;br /&gt;
- Встраивание графики&lt;br /&gt;
- Проверка результатов работы&lt;br /&gt;
- Подытожим&lt;br /&gt;
- Заключение&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Файлы для начала урока&lt;/h3&gt;&lt;br /&gt;
Чтобы начать изучение урока, вы можете скачать стартовый проект и использовать его, как базу для выполнения урока:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-5/Lesson5Base-start-kit.zip&quot; class=&quot;bb-url&quot;&gt;Набор для начала изучения урока&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Если вы скомпилируете &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; файл из стартнового набора для урока, то у вас должен будет появиться голубой круг в центре экрана.&lt;/p&gt;

&lt;p&gt;Исходные файлы выполненного урока будут доступны в конце статьи.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Вступление к уроку&lt;/h3&gt;&lt;br /&gt;
Все предыдущие уроки ограничивали себя показыванием простых цветов и фигур. В этом уроке мы начнём изучать, как можно органзиовать отображение и встраивание картинок.&lt;/p&gt;

&lt;p&gt;Техническое примечание: существует несколько различных способов встроить графику в компилируемый &lt;span style=&quot;font-weight:bold&quot;&gt;Flash&lt;/span&gt; файл. В этом уроке мы сосредоточимся на встраивании графики используя &lt;span style=&quot;font-weight:bold&quot;&gt;ActionScript&lt;/span&gt; и мета-тег &lt;span style=&quot;font-weight:bold&quot;&gt;[Embed]&lt;/span&gt;, так как это является наиболее универсальным способом встраивания, доступным в &lt;span style=&quot;font-weight:bold&quot;&gt;Flash CS4&lt;/span&gt; или других инструментах основанных на работе с &lt;span style=&quot;font-weight:bold&quot;&gt;ActionScript/Flex&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Примечание от переводчика: на мой взгляд нужно стараться избегать использование мета-тега &lt;span style=&quot;font-weight:bold&quot;&gt;[Embed]&lt;/span&gt;, до «крайних» ситуаций, в которых другие способы встраивания внешних файлов в проект не подходят. Встраивание графики не является «крайней» ситуацией и её можно заменить удобным способом встраивания графики через &lt;span style=&quot;font-weight:bold&quot;&gt;.swc&lt;/span&gt; библиотеку. Основным приемуществом &lt;span style=&quot;font-weight:bold&quot;&gt;.swc&lt;/span&gt; библиотк перед мета-тегом &lt;span style=&quot;font-weight:bold&quot;&gt;[Embed]&lt;/span&gt; является типизация встраиваемой информации и удобная «структруизация» всех файлов в одном месте. В общем, несмотря на заумные слова, работа с &lt;span style=&quot;font-weight:bold&quot;&gt;.swc&lt;/span&gt; библиотеками достаточно проста и удобна, поэтому я всем настоятельно советую работать именно с этим способом встраивания графики. Далее, в ходе перевода мы урока мы будем использовать встраивание через &lt;span style=&quot;font-weight:bold&quot;&gt;[Embed]&lt;/span&gt;, но это связано только с тем, что в исходном уроке был использован именно этот способ.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Разбираемся, что к чему&lt;/h3&gt;&lt;br /&gt;
Почти весь функционал в &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt; реализуется с помощью компонентов и регндеринг графики не является исключением. Напоминаю, что в предыдущем уроке мы использовали &lt;span style=&quot;font-weight:bold&quot;&gt;SimpleShapeRenderComponent&lt;/span&gt; для отображения голубого круга, который представлял героя игры. Чтобы реализовать возможность отображения героя игры в качестве корабля на воздушной подушке, мы будем использовать компонент-рендер, который не использовали ранее, а именно &lt;span style=&quot;font-weight:bold&quot;&gt;SpriteRenderComponent&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Компонент &lt;span style=&quot;font-weight:bold&quot;&gt;SpriteRenderer&lt;/span&gt; обладает очень схожими параметрами с компонентом рендера фигур. Основное их отличие в том, что для &lt;span style=&quot;font-weight:bold&quot;&gt;SpriteRenderer&lt;/span&gt; нам необходимо указывать путь к файлу (картинке), которая будет отображаться. На следующем шаге мы добавим в игру объект, в которм будет отображаться графика фона, а так же начнём работу со свойством &lt;span style=&quot;font-weight:bold&quot;&gt;layerIndex&lt;/span&gt; у компонента-рендера, чтобы убедиться в том, что объект-герой будет отрисовываться поверх фона.&lt;/p&gt;

&lt;p&gt;Для реализации нового функицонала в методе &lt;span style=&quot;font-weight:bold&quot;&gt;createHero()&lt;/span&gt; был изменён код, отвечающий за создание компонента-рендера:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Путь к файлу: /src/Lesson5Base.as&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;// Создание простого компонента-рендера для отображения объекта
var render:SpriteRenderer = new SpriteRenderer();
// Устанавливаем ссылку на файл с графикой
render.fileName = &quot;../assets/fanship.png&quot;;

// Добавляем компонент-рендер на сцену
render.scene = PBE.scene;

// Делаем так, чтобы объект-герой отображался перед фоном
render.layerIndex = 10;

// «Связывание» компонента рендера с объектом пространственного компонента, для получения информации о положении
render.positionProperty = new PropertyReference(&quot;@Spatial.position&quot;);
// «Связывание» компонента рендера с объектом пространственного компонента, для получения информации о размере
render.sizeProperty = new PropertyReference(&quot;@Spatial.size&quot;);

// Добавление к герою компонента рендера под именем &quot;Render&quot;
hero.addComponent(render, &quot;Render&quot;);&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;На этом этапе у вас должно получиться скомпилировать и запустить игру. Если всё пройдёт хорошо, то вы должны будете увидеть маленький корабль на воздушной подушке, который будет заменой голубому кругу.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-5/Lesson5-shot-1.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Примечание: на данном этапе изображение корабля не встроено в игру, если вы загрузить &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; файл на сервер сейчас, то он не будет ничего отображать. Это удобно для быстрой разработки прототипов, но, чтобы изображения показывались даже после загрузки на сервер или рассылки &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; файла по e-mail, вам неообходимо будет выполнить финальный шаг в данном уроке: встраивание изображение в &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; при компиляции.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Добавление фоновой картинки&lt;/h3&gt;&lt;br /&gt;
Теперь мы добавим новый объект для отображения фоновой картинки. Этот объект не будет двигаться, он будет просто находиться в центре экрана и будет прездназначен для того, чтобы отображать большое фоновое изображение.&lt;/p&gt;

&lt;p&gt;Участок кода, отвечающий за добавление фонового изображения должен быть вам знаком, так как он похож на создание объекта &lt;span style=&quot;font-weight:bold&quot;&gt;Hero&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Путь к файлу: /src/Lesson5Base.as&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;/**
 * Создание фона.
 */
private function createBackground():void
{
	// Создание объекта для фона игры
	var bg:IEntity = PBE.allocateEntity();
	
	// Создание пространственного компонента для объекта фона
	var position:Point = new Point(0, 0);
	this.createSpatial(bg, position);
	
	// Создание простого компонента-рендера для отображения объекта
	var render:SpriteRenderer = new SpriteRenderer();
	// Установка ссылки на файл с графикой
	render.fileName = &quot;../assets/bg.jpg&quot;;
	
	// Делаем так, чтобы фон отображался «за» клипом героя
	render.layerIndex = 1;
	
	// Добавляем компонент-рендер на сцену
	render.scene = PBE.scene;
	
	// «Связывание» компонента рендера с объектом пространственного компонента, для получения информации о положении
	render.positionProperty = new PropertyReference(&quot;@Spatial.position&quot;);
	
	// Добавление к герою компонента рендера под именем &quot;Render&quot;
	bg.addComponent( render, &quot;Render&quot; );
	
	// Регистрация объекта под именем &quot;BG&quot;
	bg.initialize(&quot;BG&quot;);
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;И, после того, как мы добавили функцию создания фона, не забудьте добавить вызов этой функции после вызова функции &lt;span style=&quot;font-weight:bold&quot;&gt;createHero()&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Путь к файлу: /src/Lesson5Base.as&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;// Создаём сцену
this.createScene();
// Создаём героя
this.createHero();
// Создаём фон
this.createBackground();&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-5/Lesson5-shot-2.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Встраивание графики&lt;/h3&gt;&lt;br /&gt;
На предыдущих этапах мы создали &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; файл, который подгружает графику из соседних папок. Тем не менее, если вы хотите распространять вашу игру (или просто переместить в другой раздел вашего жёсткого диска, где не будет доступа к файлам с внешней графикой), первое, что вам нужно будет сделать — это встроить графику в ваш &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; файл.&lt;/p&gt;

&lt;p&gt;Чтобы упростить встраивание внешних файлов (графики и т.п.), &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt; предоставляет класс &lt;span style=&quot;font-weight:bold&quot;&gt;ResourceBundle&lt;/span&gt;. Этот класс взаимодействует с ResourceManager, чтобы упростить процесс встраивания.&lt;/p&gt;

&lt;p&gt;Один из способов использовать класс &lt;span style=&quot;font-weight:bold&quot;&gt;ResourceBundle&lt;/span&gt; — это создать свой класс, который будет наследоваться от &lt;span style=&quot;font-weight:bold&quot;&gt;ResourceBundle&lt;/span&gt;. Чтобы сделать это, создайте новый файл в папке src/, под названием &lt;span style=&quot;font-weight:bold&quot;&gt;MyResources.as&lt;/span&gt;. Это будет объект &lt;span style=&quot;font-weight:bold&quot;&gt;ResourceBundle&lt;/span&gt;, который мы будем использовать в нашем проекте. Внутри этого класса нужно будет вставить следующий код:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Путь к файлу: /src/MyResources.as&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;package
{
	import com.pblabs.engine.resource.*;

	public class MyResources extends ResourceBundle
	{
	}
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Внутри папки &lt;span style=&quot;font-weight:bold&quot;&gt;assets/&lt;/span&gt; находится 2 файла — &lt;span style=&quot;font-weight:bold&quot;&gt;bg.jpg&lt;/span&gt; и &lt;span style=&quot;font-weight:bold&quot;&gt;fanship.png&lt;/span&gt;. Чтобы эти файлы были доступны в классе &lt;span style=&quot;font-weight:bold&quot;&gt;ResourceBundle&lt;/span&gt; вам нужно будет объявить переменные, которые будут ссылаться на встроенные файлы, с помощью мета-тега &lt;span style=&quot;font-weight:bold&quot;&gt;[Embed]&lt;/span&gt;. Например:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Путь к файлу: /src/MyResources.as&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;package  
{
	import com.pblabs.engine.resource.ResourceBundle;
	
	public class MyResources extends ResourceBundle
	{
		// Встраиваем графку фона
		[Embed(source=&quot;../assets/bg.jpg&quot;)]
		public var  resBg:Class;
		
		// Встраиваем графику корабля
		[Embed(source=&quot;../assets/fanship.png&quot;)]
		public var  resShip:Class;
		
		public function MyResources() 
		{
			
		}	
	}
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Для того, чтобы мы могли использовать наш пользовательский класс &lt;span style=&quot;font-weight:bold&quot;&gt;ResourceBundle&lt;/span&gt;, нам нужно создать его экземпляр из главного класса. Это лучше сделать в конструкторе главного класса сразу после вызова функции &lt;span style=&quot;font-weight:bold&quot;&gt;PBE.startup()&lt;/span&gt;. Например так:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;Путь к файлу: /src/Lesson5Base.as&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;public class Lesson5Base extends Sprite
    {
		public function Lesson5Base()
		{
			// Запускаем работу PBE
			PBE.startup(this);
			
			// Создаём объект для работы со встроенными файлами
			new MyResources();&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;На этом всё должно быть закончено. Приведённый код встроит графику и сделает её доступной для &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt;. Когда &lt;span style=&quot;font-weight:bold&quot;&gt;ResourceBundle&lt;/span&gt; будет инициализирован он автоматически будет «смотреть» какие файлы были встроены в него и зарегистрирует их для &lt;span style=&quot;font-weight:bold&quot;&gt;PBE ResourceManager&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Подытожим&lt;/h3&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight:bold&quot;&gt;SpriteRenderComponent&lt;/span&gt; может быть использован для отображения графики объекта. Для того, чтобы установить изображения необходимо задать свойство &lt;span style=&quot;font-weight:bold&quot;&gt;fileName&lt;/span&gt; класса &lt;span style=&quot;font-weight:bold&quot;&gt;SpriteRenderComponent&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Если вы не будете встраивать графику игры в скомпилированный &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; файл, то вы не сможете распространять &lt;span style=&quot;font-weight:bold&quot;&gt;.swf&lt;/span&gt; файл или перемещать его в другое место (без дополнительного перемещения файлов графики. Наиболее простым способом встраивания внешних файлов в &lt;span style=&quot;font-weight:bold&quot;&gt;PBE&lt;/span&gt; является использование класса &lt;span style=&quot;font-weight:bold&quot;&gt;ResourceBundle&lt;/span&gt;. К тому же, если вы используете библиотеку &lt;span style=&quot;font-weight:bold&quot;&gt;Flash IDE&lt;/span&gt; или &lt;span style=&quot;font-weight:bold&quot;&gt;.swc&lt;/span&gt; библиотеки, то вы сможете задавать графику для отображения напрямую, для этого свойству &lt;span style=&quot;font-weight:bold&quot;&gt;displayObject&lt;/span&gt; класса &lt;span style=&quot;font-weight:bold&quot;&gt;DisplayObjectRenderer&lt;/span&gt; или его дочерних классов нужно задать ссылку на объект, который вы хотите использовать в качестве графики.&lt;/p&gt;

&lt;p&gt;Для использования &lt;span style=&quot;font-weight:bold&quot;&gt;ResourceBundle&lt;/span&gt; используйте следующий синтаксис:&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;public class MyResources extends ResourceBundle
{
	[Embed(source=&quot;../assets/imageFilename.png&quot;)]
	public var someName:Class;
}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Где &lt;span style=&quot;font-weight:bold&quot;&gt;../assets/imageFilename.png&lt;/span&gt; — это путь к файлу, а &lt;span style=&quot;font-weight:bold&quot;&gt;someName&lt;/span&gt; — уникальное имя, которое будет ссылаться на встроенный файл.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Заключение&lt;/h3&gt;&lt;br /&gt;
Поздравляем, вы завершили &lt;span style=&quot;font-weight:bold&quot;&gt;урок #5&lt;/span&gt;, и научились использовать внешние файлы при создании игр.&lt;/p&gt;

&lt;p&gt;Вы можете скачать все файлы, которые использовались в уроке по ссылке ниже.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight:bold&quot;&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1474897/Flashist.ru/PushButton-Engine-Lesson-5/Lesson5Base.zip&quot; class=&quot;bb-url&quot;&gt;Архив с исходниками урока&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
 <comments>http://www.flashist.ru/lessons/pushbutton-engine-urok-5#comments</comments>
 <category domain="http://www.flashist.ru/taxonomy/term/99">AS3</category>
 <category domain="http://www.flashist.ru/taxonomy/term/4">Flash</category>
 <category domain="http://www.flashist.ru/taxonomy/term/108">PushButton Engine</category>
 <category domain="http://www.flashist.ru/taxonomy/term/14">Игры</category>
 <category domain="http://www.flashist.ru/taxonomy/term/91">урок</category>
 <category domain="http://www.flashist.ru/taxonomy/term/109">Фреймворк</category>
 <pubDate>Sun, 18 Jul 2010 15:07:12 +0400</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">326 at http://www.flashist.ru</guid>
</item>
</channel>
</rss>

