Вступительное слово

Сегодня мы продолжим изучать PushButton Engine (PBE) и узнаем, как в PBE создавать свои объекты и компоненты. Статья является переводом 2-го официального урока по PushButton Engine, в которой рассказывается про работу с компонентами PBE и создание простых фигур.
PushButton Engine Урок #2: добавление простой фигуры
«Чем выше должно быть ваше здание, тем ниже должно быть его основание» — Святой Августин
Цель этого урока, научить пользователей добавлять простые фигуры, которые будут отрисовываться на экране.
Данный урок состоит из серии шагов: маленьких промежутков, которые будут фокусироваться на достижении небольших целей. Такой подход позволит ускорить процесс понимания PusButton Engine (PBE).
Содержание:
— Файлы для начала урока
— Загрузка начального проекта
— Редактирование исходных файлов
— Заценить это всё в действии
— Обзор
— Заключение
Файлы для начала урока
Чтобы начать изучение урока, вы можете скачать стартовый проект и использовать его, как базу для выполнения урока:
Набор для начала изучения урока
Исходные файлы выполненного урока будут доступны в конце статьи.
Загрузка начального проекта
Опираясь на урок #1 вам нужно будет распаковать содержимое архива в нужную папку и убедиться, что проект компилируется у вас. Это даст вам «базовый» проект, с которым вы сможете дальше работать.
Теперь мы можем приступить к настройке простой сцены PushButton Engine, а так же добавить на сцену круг, который будет отрисовываться в центре.
Редактирование исходных файлов
На первый взгляд, наш проект выглядит, как обычный Flash проект без содержимого.
Путь к файлу: /src/Level2Base.as
[SWF(width="800", height="600", frameRate="60")]
public class Lesson2Base extends Sprite
{
public function Lesson2Base()
{
// Запускаем работу PBE
PBE.startup(this);
}
}
* This source code was highlighted with Source Code Highlighter.В начале мы настроим SceneView, который представляет собой «полотно», на котором будут отрисовываться объекты, созданные на сцене.
Теперь мы создадим саму сцену (Scene), через вызов вспомогательной функции PBE.initializeScene:
/**
* Создание сцены.
*/
private function createScene():void
{
// Создание сцены
var sceneView:SceneView = new SceneView();
sceneView.width = 800;
sceneView.height = 600;
// Это вспомогательная функция, которая настроит простую сцену
PBE.initializeScene(sceneView);
}
* This source code was highlighted with Source Code Highlighter.Теперь мы создадим объект героя. Объект героя, так же как и объект сцены, будет обладать 2-мя компонентами.
Первый компонент является пространственным компонентом: он «рассказывает» пространственному менеджеру, где находится объект
Второй компонент — это компонент рендера (отрисовки): она регистрирует самого себя в менеджере рендера и «говорит» менеджеру, как объект должен быть показан на экране. В текущем уроке мы будем использовать простое изображение круга, но PBE предоставляет гораздо больше возможностей.
/**
* Создание объекта героя.
*/
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;
// Добавление к герою пространственного компонента под именем "Spatial"
hero.addComponent(spatial, "Spatial");
// Создание и настройка рендера для отображения объекта
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("@Spatial.position");
// «Связывание» компонента рендера с объектом пространственного компонента, для получения информации о вращении
render.rotationProperty = new PropertyReference("@Spatial.rotation");
// Добавление к герою компонента рендера под именем "Render"
hero.addComponent(render, "Render");
// Регистрация объекта под именем "Hero"
hero.initialize("Hero");
}
* This source code was highlighted with Source Code Highlighter.Мы уже многого добились! Если вы сейчас скомпилируете проект, вы должны будете увидеть объект на экране!
Заценить это всё в действии
После компиляции у вас должен будет появиться .swf файл, похожий на представленный ниже (кликните, чтобы открыть в новом окне):

Обзор
Итак, теперь мы знаем, что для того, чтобы создать объект с помощью ActionScript, нужно использовать следующий код:
// Создаём сущность
var newEntity:IEntity = PBE.allocateEntity();
// Добавляем компоненты и устанавливаем свойства (код пропущен)
// Ригистрируем объект в PBE под именем "EntityName"
newEntity.intialize("EntityName");
* This source code was highlighted with Source Code Highlighter.Для создания компонентов потребуется написать немного больше кода:
// Создаём новый компонент
var newComponent:IEntityComponent = new WhateverComponent();
// Устанавливаем настройки компонента
newComponent.field = value;
// Добавляем компонент к объекту под именем "TheComponentName"
newEntity.addComponent(newComponent, "TheComponentName");
// Повторяем эти действия для каждого компонента и его свойств
* This source code was highlighted with Source Code Highlighter.Заключение
Ура! Вы только что завершили урок #2. В ходе этого урока вы добавили свои первые объекты и компоненты в игру и увидели результаты своей работы! Будущие уроки будут более сложными, но мы надеемся, что уроки помогут вам разобраться с PBE.
При желании, вы можете скачать файлы, которые были созданы в ходе написания данного урока:
Архив с исходниками урока
От переводчика
Перевод второго урока подошёл к концу, не могу сказать, что этот урок, в купе с уроком #1 рассказал нам много про PBE, но, надеюсь, дальше будет интереснее и мы поймём все прелести работы с PBE.
Ссылки на все уроки (будут пополняться по мере выкладывания уроков):
1) PushButton Engine Lesson #1: настройка FlashDevelop
2) PushButton Engine Lesson #2: добавление простой фигуры
3) PushButton Engine Lesson #3: добавление управления к пользовательскому компоненту
