Начало работы с простой флеш игрой - PullRequest
0 голосов
/ 12 ноября 2010

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

На мой взгляд, необходимо выполнить четыре вещи.

  1. Создатьи размер мувиклипа

  2. Положение мувиклипа

  3. Заставьте мувиклип упасть

  4. Определите, когда онозакончил "падение" и посмотрите, поймал ли его пользователь.

Мой вопрос: как мне создать, изменить размер и расположить мувиклип?Я дал ему идентификатор «диск».Что теперь?Я делаю ENTER_FRAME событие и делаю там свое творение?Как мне переместить диск вниз?Я использую подростков, что-то еще?

Я прежде всего спрашиваю это как проверку работоспособности.

Ответы [ 3 ]

1 голос
/ 12 ноября 2010

Я бы использовал какой-то заводской класс, который бы отвечал за сброс случайных дисков с верха сцены.

Помимо того, что вы правильно упомянули, вам также необходимо:

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

  • определяет, куда диск начнет падать , он может быть случайным или всегда с одного и того же места.

  • вы можете выяснить, сталкиваются ли два объекта, используя метод AS3 hitTestObject, принадлежащий классу DisplayObject.

  • ваш фабричный класс может иметь метод start() и stop(). После запуска start() запускается бесконечный цикл или ENTER_FRAME, и диски начинают падать. Если вы хотите создавать диски с определенной скоростью , вы можете объединить цикл с таймером для запуска кода с определенным интервалом . Например, каждые 3 секунды создайте 10 дисков (используя основной цикл) и поместите их на сцену.

0 голосов
/ 12 ноября 2010

Предполагая, что у вас есть MovieClips с именем 'disc' & 'userHand', экспортированные в actionScript, я обобщу его следующим образом:

  • Создайте количество дисков и рандомизируйте их расположение.Начните с чего-то вроде:
var n:int = 30; //Total no of Discs

for(i:int=0;i<n;i++) 
   {
   var mc:disc = new disc();
   mc.x=Math.random()*stage.width(); //to scatter the discs across the stage 
   mc.y=-mc.height;  //initially hide out a disc
   addchild(mc);
   }
  • Также добавьте мувиклип 'userhand' на сцену.
  • Добавьте функцию обработчика энтерфрейма.
  • Заполните обработчик enterframe, чтобы обновить (продолжать увеличивать) позицию y каждого диска.
  • Используйте hitTestObject () в обработчике enterframe, чтобы определить попадание среди каждого «диска» & «userHand».
  • Сброс позиции всех клипов «диска», которые падают с экрана, в случайные положения, как вначале.
0 голосов
/ 12 ноября 2010

Возможно, вы захотите взглянуть на программирование частиц.

http://r3dux.org/2010/01/actionscript-3-0-particle-systems-3-rain-effect/

На очень высоком уровне, что бы вы сделали.

Вам необходимо создать класс диска.

Вы могли бы дать этому классу некоторые переменные свойства, такие как ширина, высота, х и т. Д.

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

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

Скажите, если его положение y больше высоты сцены, извлеките диск. Если пользователь ловит его (возможно, с помощью теста на попадание), также удалите его.

Очень рекомендую взглянуть на ссылку, которую я разместил.

...