ООП и флеш. Подготовка графики.

1 сообщение / 0 новое
Аватар пользователя flahhi
flahhi
Не в сети
Регистрация: 23.08.2012
Баллы: 284
ООП и флеш. Подготовка графики.

Перед тем как приступить к подготовке графики, нарисуем сетку на рабочей области с помощью класса Grid.as, который мы добавили в предыдущий раз. Пускай размер рабочей области будет по стандарту, 800 на 600. Так как размеры одной клетки 50х50 то по горизонтали будем иметь 16, а по вертикали 12 клеток. В классе Main внутри метода Init пишем код:new Grid(stage, 16, 12);
Запускаем, видим вот такой результат:Теперь переходим в Flash IDE и создаём новый as3 проект под названием wolfisland. Сохраняем его в папку lib нашего проекта. Нам нужно нарисовать растение, зайца, зайчиху, волка и волчицу. Единственный момент, который надо учитывать при рисовании, это чтобы размер каждого из них был не меньше 50х50 пикселей и не больше 150х150 пикселей. Как вы поняли, это всё связано с размером клетки.  Дальше мы будем использовать hitTest и будеь плохо если обьекты будут занимать большУю область. Я долго заморачиваться над графикой не стал, всё таки это уроки по программированию. Вот мои персонажи:Лучше им не делать анимацию и сделать их растровыми, а то когда они начнут плодиться - будет жарко Smile  Если персонаж меньше области 50x50 (как у меня зайцы и морковь) рисуем на новом слое прямоугольник 50х50 и ставим ему прозрачность в 0.  Оборачиваем всё рисунки в клипы с экспортом для as, назначая следующие классы: WolfClipMale, WolfClipFemale, RabbitClipMale, RabbitClipFemale и PlantClip. Ставим галку для экспорта в swc и компилируем. С графикой пока всё. Закрываем flash IDE. Переходим в FD. Подключаем полученый swc файл. Создаём (если ещё не создали прошлый раз) основные классы: Plant, Animal, RabbitMale, RabbitFemale, WolfMale и WolfFemale. Сейчас, чтобы проверить правильность подключения графики разберём самый простой класс растений - Plants.as. Вот такой код написанный внутри него.package  
{
     import flash.display.MovieClip;
     import flash.events.Event;

     public class Plants extends MovieClip
     {
          public var clip:MovieClip;
          public function Plants(st:Object, PlantClass:Class) 
          {
               clip = new PlantClass();
               clip.x = 50 * Math.floor(Math.random() * 16 + 1) - 25; 
               clip.y = 50 * Math.floor(Math.random() * 12 + 1) - 25;
               st.addChild(clip);
          }
     }
}
Я не хочу чтобы вы думали, что разработка этих классов происходит быстро и безболезненно Smile На самом деле это долгий процесс отладки, особенно если классы не такие простые как этот и ели их несколько десятков))) Здесь я сразу буду писать большими кусками кода чтобы не растягивать удовольствие. Как видим класс состоит только из конструктора, так что спокойно можно было бы его преобразовать в отдельный метод Main класса. Но мы так делать не будем, так как нашей целью является познакомиться с ООП и в частности разобраться с наследованием и работой с разными файлами.  До, забыл сразу оговорить, - все поля и методы в данном примере будем делать public чтобы не морочить себе голову Smile Конструктор принимает два параметра : первый - куда лепим растения, а второй класс  клипа который мы назначили во Flash IDE, помните?) Что делается внутри конструктора? Правильно. Мы создаём обьект класса, генерируем ему случайные координаты с расчётом на то, чтобы он располагался точно по центру какой либо клетки и добавляем его на stage (или в клип). Теперь добавим на экран несколько морковок. Переходим в класс Main и после строчки, которой мы добавили сетку, пишем:var k = 10;
while (k--) new Plants(stage, PlantClip);
Как вы уже догадались, результатом будет десять морковок случайным образом разбросанных по клеточкам: