Рисуем во Flash IDE, а кодим во FlashDevelop-е

В данной статье речь пойдёт о том, как очень удобно использовать графику для своих проектов на as3 если вы программируете во FlashDevelop.

При этом для тех кто привык работать с графикой во Flash IDE этот метод будет прозрачным и не обременит разум в процессе освоения :]

Начнём с того, что создадим новый проект во FlashDevelop.

Рис. 1. Диалог создания нового проекта во FlashDevelop.
Рис. 1. Диалог создания нового проекта во FlashDevelop.

После этого у нас сформируется следующая структура файлов и папок, отображаемая справа во FlashDevelop-е. И первым делом я настраиваю свойства проекта (доступно в верхнем меню Project -> Properties…), для данного примера я выставил настройки как показано на рис. 2.

Рис. 2. Настройки и структура файлов и папок нового проекта.
Рис. 2. Настройки и структура файлов и папок нового проекта.

Поясню по настройкам:

  • такое разрешение (640×480) является золотой серединой (или даже можно сказать стандартом) для flash-игр. Т.к. некоторые порталы не принимают игры с большим разрешением;
  • частота кадров 35 — не нагружает процессор как 60 кадров, а анимация глазу намного приятнее чем 24 или 30 кадров. Поэтому тоже своего рода золотая середина. Плюс — при работе с физическим движком данная частота обновления тоже является оптимальной.

Далее запускаем Flash IDE и создаём новый проект ActionScript 3.0. Настраиваем проект, выставляя ему такие же параметры разрешение и частоту кадров. Такая же частота кадров нужна для тестирования анимации MovieClip-ов, чтобы сразу видеть так, как это будет выглядеть в скомпилированной игре.

Далее сохраняем этот проект (файл .fla) в папку lib нашего основного проекта. В данном проекте мы будем создавать всю графику, которая только понадобится для проекта.

Теперь принимаемся за настройку публикации (File -> Publish Settings…): на вкладке Formats убираем галочку с HTML, затем переходим на вкладку Flash и ставим галочку Export SWC. Нажимаем Ok. Вкладка Flash показана на рис. 3.

Рис. 3. Внешний вид проекта .fla и его настройки публикации.
Рис. 3. Внешний вид проекта .fla и его настройки публикации.

Теперь можно Нарисовать что-нибудь, например интерфейс главного меню.

Распишу всё что я делал по шагам во Flash IDE:

  1. Импортировал в библиотеку (File -> Import -> Import to library…) заготовленную картинку jpg (фон для меню) с размерами 640х480, разместил её на сцене.
  2. Создал новый слой, в нём создал надпись (hotkey «T») — заголовок игры. Шрифт выбрал Comic Sans MS и встроил его (нужно выбрать шрифт и нажать рядом кнопку Embed…, в диалоге поставить галочку All — все символы), после этого он появился в библиотеке и его можно выбирать для любого текста (в списке шрифтов он становится доступным почти в самом верху с пометкой — звёздочкой). На рис. 4 показано текстовое поле, выбранный встроенный шрифт, кнопка Embed и сам диалог. Встроенные шрифты необходимы, чтобы текст в вашей флешке выглядел везде одинаково, иначе, если у пользователя не будет такого шрифта в системе, то текст отобразится с нежелательным шрифтом или кракозябрами.
  3. Создал ещё 1 слой для кнопок. Изобразил незамысловатую кнопку в виде прямоугольника с закруглёнными углами, поместил над прямоугольником кнопки текст (наименование кнопки) и выбрал тот же (уже встроенный) шрифт. Таким образом создал 2 изображения кнопок: Play и Options. На рис. 5 показан диалог конвертации кнопки Play. Обратите внимания на название объекта в библиотеке (btnPlay) и название класса для as3 (Play_btn) такой стиль наименования предотвращает совпадение имён классов и объектов и помогает легко находить классы из библиотеки уже в самом коде во FlashDevelop.
  4. Выделил элементы каждой кнопки по отдельности и с конвертировал их в символ кнопки (hotkey конвертации — F8, тип символа кнопки Type: Button), при этом в диалоге конвертации необходимо поставить галочку Export for ActionScript.
  5. Затем выделил всё и с конвертировал в символ MovieClip (Type: MovieClip) так же поставив галочку Export for ActionScript.
Рис. 4. Диалог встраивания шрифта.
Рис. 4. Диалог встраивания шрифта.
Рис. 5. Диалог конвертации в символ-кнопку с экспортом в as3.
Рис. 5. Диалог конвертации в символ-кнопку с экспортом в as3.

Вот что у меня получилось:

Рис. 6. Нарисованная менюшка во Flash IDE.
Рис. 6. Нарисованная менюшка во Flash IDE.

Теперь нажимаем File -> Publish и у нас компилируются библиотека .swc.

Переходим во FlashDevelop, открываем в дереве файлов папку lib и видим там файл libGraph.swc, правой кнопкой -> ставим галку Add To Library. Теперь все экспортированные классы из Flash IDE стали доступны в нашем коде.

Теперь остаётся написать код отображения и обработки главного меню:

package
{
  import flash.display.Sprite;
  import flash.events.Event;
  import flash.events.MouseEvent;
     
  [Frame(factoryClass="Preloader")]
  public class Main extends Sprite
  {
    private var _menu: MainMenu_mc;
    private var _btnPlay: Play_btn;
    private var _btnOptions: Options_btn;
     
    public function Main():void
    {
      if (stage) init() else addEventListener(Event.ADDED_TO_STAGE, init);
    }
     
    private function init(e:Event = null):void
    {
      var i: int;
      removeEventListener(Event.ADDED_TO_STAGE, init);
      // создаём менюшку
      _menu = new MainMenu_mc();
      // центрируем её, чтобы отображалась посередине
      _menu.x = 640 / 2;
      _menu.y = 480 / 2;
      // добавляем менюшку в отображение
      addChild(_menu);
      // парсим меню для нахождения кнопок
      for (i = 0; i < _menu.numChildren; i++) {
        if (_menu.getChildAt(i) is Play_btn)
        _btnPlay = _menu.getChildAt(i) as Play_btn;
        if (_menu.getChildAt(i) is Options_btn)
        _btnOptions = _menu.getChildAt(i) as Options_btn;
      }
      // назначаем кнопкам слушатели события нажатия
      _btnPlay.addEventListener(MouseEvent.CLICK, onPlayBtnClick);
      _btnOptions.addEventListener(MouseEvent.CLICK, onOptionsBtnClick);
    }
     
    private function onPlayBtnClick(e:MouseEvent):void
    {
      trace("play click!");
    }
     
    private function onOptionsBtnClick(e:MouseEvent):void
    {
      trace("options click!");
    }
     
  }
}

Как можно заметить, классы, которые мы создавали во Flash IDE (MainMenu_mc, Play_btn, Options_btn), доступны нам в коде FlashDevelop-ера так же легко, как если бы мы создавали их в самом коде.

Можете скачать архив с исходниками примера и сами всё пощупать. :]