пятница, 2 декабря 2011 г.

Очередное знакомство с Flash'ем)

Накануне дабы отвлечься от плотного кодинга на Дэлфе и поразмять мозги чем-то ещё, взялся я за Флэша))

Ранее приходилось делать баннеры и временами теорию почитывал.
Но это было оч давно, поэтому можно считать, что во флэше я опять новичок)

Вообщем решил, что пора начинать и во флэше делать игры)



Скажу сразу, я в курсе того, что норм игроделы кодят в нём, создавая ресурсы в IDE, а код пишут в FlashDeveloper'е. и компилят потом всё в нём же.
Я познакомился с такой связкой вот в этой минимальной статье на эту тему.

Но первую игрулю решил всё таки сделать в IDE, т.к. щас особо времени капаться в FDev'е нету.
Поэтому и начал разбираться потихоньку в одной лишь IDE.

Как открыл флэш, сразу начал вспоминать как я делал элементарный баннер почти год назад)
Ну щас-то конечно цели совсем не баннерские и стал придумывать какую-нить простую  игру)
А в голове мысли в основном о Asteroids, вот и решил долго не думать, а сделать что-нить космическо-стреляющее. Хоть материалы не искать)

Определил 3 раздела игры(по минимуму) - это меню, процесс игры, и конечный фрейм.
Создал 2 TIMELINE'а AS и Objects, кадры на каждом под, соответствующие названиям, вещи.


Сижу, делаю менюшку.
Сильно не придумывал - сделал таки одну кнопку в виде текста.) На первом кадре таймлайна объектов расположил текст, а в AS написал обработку нажатия, код выглядит довольно таки легко:


ActionScript3 Code
import flash.events.MouseEvent;

stop();

btnStartGame.addEventListener(MouseEvent.MOUSE_DOWN, startGameClick);                 

function startGameClick(aME: MouseEvent): void {
     gotoAndPlay(20);
}

Как можно заметить, кусок таймлайна с процессом игры у меня начинается на 20-м кадре, хотя длина этих кусков совершенно не важна.

От теперь само пикантное - процесс игры.
Замыслил я скроллер - кораблик будет лететь, в морду ему будут лететь астероиды, а он их нещадно расстреливать будет, если успеет. От така незамысловатая идея.
Вобщем тут уже новая для мня тема пошла - динамически создаваемые объекты, которые ещё и AS'ом шевелить надо)
Не сразу допёр как их там надо создать, законвертить с экспортом в AS3, потом можно удалять с формы и спокойно юзать в скрипте из библиотеки.
Таким же макаром и астероиды и лазерные пули.
А кораблик, в силу своей важности в роли ГГ, можно и не динамить, а просто оставить на форме.

Вот только с параллельным запуском пуль и астероидов я чё-т не стал пока заморачиваться, не сразу придумал как это надо организовать...
Но потом решил что всё равно надо разобраться и по такому принципу сделал звёзды, да ещё и на Tween их посадил.

Какие-то куски кода без пояснения и визуализации библиотеки материалов(чтобы понять что там за MovieClip'ы вообще созданы) я думаю приводить тут будет как-то не очень, поэтому поясню что мне в первую очередь понравилось в AS3.

Мне понравились описания методов событий - легко понятно что и как получается.
Интересно оказалось как в одном MovieClip'е можно создать другие MC и главный создавать в основном коде, и при создании код внутри него тоже начнёт выполняться.
Получается MC-родитель своего рода менеджер того, что внутри него)
Короче модульность как у классов-менеджеров)
Чутка есть воля для "неаккуратного" кода - функции можно вызывать как выше объявленные, так и ниже объявленные.
Код пишется с каким-то ощущением прозрачности, лёгкости. Эт конечно от высокоуровности всё.)

По поводу реализации пока что не понял как сделать чтобы позже создаваемые объекты не перекрывали ранее созданные... Тест глубины однако)

Теперь что не понравилось и не привычно.
Во первых это редактор самого кода в IDE, ну просто постоянно пытается вывести из себя. Не работают элементарные операнды редакторов, например Ctrl+Y(удалить строку на которой курсор), Ctrl+(влево/вправо) курсор останавливается на всяких скобках, знаках... ещё б на запятых останавливался! Ctrl+Del сразу сносит следующе стоящее слово, а не пробелы до него.
Потом от непривычности долго не мог понять в чём ошибка в if'е без скобок для условия, т.к. ошибка описывалась не совсем про скобку: "expecting leftparen befor i"))
Ну и остальное вроде мелочи или не помню - не злопамятный.)

Вообщем вот маленький результат дневного труда:

>


1 комментарий:

  1. Неплохо :) Мой первый опыт с флешем состоялся за ночь перед сдачей лабы по нему, поэтому я выкурил по диагонали официальный мануал по нему и накатал вот такое за 2-4 часа:

    http://olymp.a42.ru/upload/projects/31/car.swf

    Куча багов, зато лабу сдал :)

    ОтветитьУдалить