суббота, 25 декабря 2010 г.

Hello FlashDevelop. Часть 1

1. Для начала нам понадобится скачать FlashDevelop и Flex SDK.
2. После этого устанавливаем FlashDevelop и распаковываем Flex SDK в папку “…\FlashDevelop\Tools\flexsdk” (где “…\FlashDevelop\” – это папка, в которую Вы установили сам FlashDevelop).
3. Запускаем FlashDevelop и создаем новый AS3-проект, для этого в меню Project выбираем “New Project…” и в появившемся окне выбираем пункт “AS3 Project”, в поле “Name” задаем имя проекта (пусть это будет “HelloFlashDevelop”), выбираем местоположение папки проекта, жмем “OK”. Проект создан.
Окно создания проекта
4. Справа Вы увидите панель Project, в ней отображается структура файлов и папок Вашего проекта (Если панели нет, то в меню View выбираем пункт “Project Manager”):
Менеджер проекта
Как видно, наш проект уже содержит один файл – Main.as, отмеченный зеленой стрелочкой (это означает, что это файл главного класса проекта – точка входа, с которой все начинается). Открываем этот файл, дважды щелкнув по нему в панели менеджера проекта. И вот, что данный класс уже содержит:

package 
{
    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite 
    {

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
        }          
    }
}

В первой строке идет объявление пакета. Пакеты нужны для организации классов и отражают структуру папок, в которых они расположены. В качестве имен пакетов рекомендуется использование имен доменов, что гарантирует уникальность его имени и отсутствие конфликтов имен. Например, у Вас может быть класс Utils, расположенный в папке “ru/teormech/utils/”, тогда имя пакета будет ru.teormech.utils.
Так как при создании проекта, мы оставили поле Package пустым (см. первый скриншот), то пакет у нас безымянный:

package
{

Затем происходит импорт необходимых классов Sprite и Event:

import flash.display.Sprite;
import flash.events.Event;

Эти две строки нужны, чтобы компилятор “знал”, где искать эти классы.
Класс Sprite является базовым для любого приложения, т.к. он необходим чтобы наше приложение как-то отображалось на мониторе. Существует альтернатива в виде класса MovieClip, но его использование целесообразно при работе с Flash IDE.
Класс Event – это, как ясно из его названия, класс события. В нашем случае он нужен для реагирования на добавления приложения в список отображения.

Далее идет объявление класса Main с идентификатором доступа public, это означает, что этот класс будет доступен из любого места приложения:

public class HelloWorld extends Sprite
{

Наш класс является наследником (ключевое слово extends) класса Sprite, т.е. он будет обладать той же функциональностью, что и класс Sprite (например, можно будет его переместить на экране, отмасштабировать, нарисовать в нем что-либо и т.д.).
Заметьте, что имя класса совпадает с именем файла, в котором он находится.

Переходим далее, а далее мы видим конструктор класса – функцию, которая автоматически вызывается, когда мы создаем новый экземпляр класса (в случае с нашим главным классом, он будет создан при компиляции проекта). Имя конструктора в ActionScript должно совпадать с именем класса:

public function Main() 
{
    if (stage) init();
    else addEventListener(Event.ADDED_TO_STAGE, init);
}

Внутри конструктора происходит проверка на существование свойства stage. Если оно существует, то сразу вызывается метод init. Если свойство stage отсутствует, значит наш класс еще не был добавлен в список отображения и нам надо подождать этого события, для этого мы добавляем обработчик события Event.ADDED_TO_STAGE (что можно условно перевести как ДОБАВЛЕН_НА_СЦЕНУ):

addEventListener(Event.ADDED_TO_STAGE, init);

Когда данное событие все же происходит, то вызывается метод init (является вторым параметром метода addEventListener):

private function init(e:Event = null):void 
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
}

Метод init имеет идентификатор доступа private, т.е. он доступен только из данного класса, и никакой другой класс не может к нему обратиться. На данный момент в этом методе происходит только удаление обработчика события Event.ADDED_TO_STAGE, т.к. он больше уже не понадобится, ведь наше приложение уже готово к работе:

removeEventListener(Event.ADDED_TO_STAGE, init);

Следующая строчка // entry point – комментарий. Комментарии нужны только разработчику (в них обычно описывают логику программы на человеческом языке) и игнорируются компилятором.
Добавим после этой строки в метод init следующий код (комментарии присутствуют лишь для разъяснения):

// Создание нового  текстового поля
var myText:TextField = new TextField();
// Задание текста в текстовом поле
myText.text = “Hello FlashDevelop”;
// Добавление текстового поля в список отображения
addChild(myText);

Проверьте, появилась ли у Вас в коде строчка:

import flash.text.TextField;

Если нет, то допишите ее в начале файла (обычно FlashDevelop автоматически импортирует используемые классы):

import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;

Теперь нажав на кнопку "Test Movie", мы запустим наш первый проект:
В появившейся флэшке должно отобразиться текстовое поле.
Если же ничего не получилось, то скачайте исходник к этому уроку и сравните его содержимое с тем, что получилось у Вас.

Я знаю, что данный урок не особенно оригинален или интересен, но это только начало. Если у Вас возникли какие-нибудь вопросы, то задавайте их в комментариях.

В качестве дополнительной справки рекомендую почитать следующие статьи:

А также, если Вы только начинаете программировать на ActionScript, то найдите какую-нибудь книгу по нему, например:
"Колин Мук - Actionscript 3.0 для Flash. Подробное руководство". Найти ее в электронном виде не составит особого труда

Комментариев нет:

Отправить комментарий