Гэри Розенцвейг

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript


Скачать книгу

Код выполняется один раз. В данном случае следует воспользоваться возможностью и создать 10 новых клипов:

      OnClipEvent (load) {

      // Nicaaai 10 eeeiia.

      for(i=0;i<10;i++) {

      _root.attachMovie("sample","sample"+i,i);

      // Onoaiaaeeaaai eii.aeiaou

      _root["sample"+i]._x = i*50+50;

      _root["sample"+i]._y = 100;

      }

      }

      Координаты клипов задаются одновременно с их созданием. Значение по вертикали равно 100, координата по горизонтали может иметь различные значения от 50 до 500. Результат показан на рис. 3.6.

      Рисунок 3.6. Эти 10 клипов были созданы из эталона при помощи ActionScript

      Вторая часть кода находится в программе обработки onClipEvent(enterFrame). Код выполняется в каждом цикле клипа «actions». Если клип воспроизводится со скоростью 12 кадров в секунду, код будет выполняться также 12 раз в секунду.

      onClipEvent (enterFrame) {

      // Iiai.a.eaaai ea.aue eeei a oeeea.

      for(i=0;i<10;i++) {

      _root["sample"+i]._rotation += 5;

      }

      }

      Данный код циклически выполняется во всех клипах и поворачивает каждый их них на 5°. В результате на рабочем поле будет 10 вращающихся клипов.

      Исходный файл: Gears.fla

      Я также создал улучшенную версию ролика под названием Gears.fla. За исключением кода ролик ничем не отличается от предыдущего. В Gears.fla клипы расположены таким образом, что зубья шестеренок соприкасаются. Чтобы создать эффект работающего механизма, каждый ролик изначально повернут относительно предыдущего на 15°. Соседние зубья каждой шестеренки расположены с интервалом в 30°, поэтому зубъя соседних шестеренок сцепляются. Кроме того, каждая шестеренка вращается в направлении, отличном от направления вращения предыдущей. Вот как выглядит код:

      onClipEvent (load) {

      initialRotation = 0;

      // Nicaaai 10 eeeiia.

      for(i=0;i<10;i++) {

      // I.eniaaeiyai i.a.aaiie eeei.

      _root.attachMovie("sample","sample"+i,i);

      // Onoaiaaeeaaai eii.aeiaou

      _root["sample"+i]._x = i*37;

      _root["sample"+i]._y = 100;

      // Onoaiaaeeaaai ea.aiio neaao.uaio iiai.io

      // ia 15° ioiineoaeuii i.aauaouaai.

      _root["sample"+1]._rotation = initialRotation;

      initialRotation += 15;

      }

      }

      onClipEvent (enterFrame) {

      // I.iaaaaai ana eeeiu .a.ac iaei.

      for(i=0;i<10;i+=2) {

      // Iiai.a.eaaai ii .aniaie no.aeea.

      _root["sample"+i]._rotation += 5;

      // Neaao.uee iiai.io i.ioea .aniaie no.aeee.

      _root["sample"*(i+1)],_rotation -= 5;

      }

      }

      Чтобы понять, как устроен код, откройте ролик Gears.fh и поработайте с ним. Этот, а также многие другие коды, которые вы встретите в данной книге, невозможно объяснить только теоретически. Для того чтобы до конца понять устройство и работу примеров, следует поработать с ними.

      Обработчики событий

      Во Flash MX единственным способом отслеживания таких событий, как, например, enterFrame, было использование обработчиков onClipEvent в сценариях клипа. В версии 8 появилась возможность использовать обработчики прямо в сценарии кадра.

      Вот простой пример. Этот сценарий помещен в кадр и посылает сообщение в окно Output при каждом обращении к кадру.

      root.onEnterFrame = function() {

      trace("enterFrame Event");

      }

      Вместо команды trace вы можете использовать другие команды аналогично тому, как это делалось на протяжении этого урока. Можно также определить имя для функции, обрабатывающей событие. Тогда предыдущий