[2]: Скорость в Adobe Flash

Приветствую вас, друзья, сегодня я расскажу вам про то, каким образом работать со скоростью объектов в ADOBE FLASH, да и как её реализовать :)

Во-первых, скорость в жизни это расстояние/время, в action script 3.0 скорость объекта это расстояние/кадры. Т.е. наш перемещаемый объект движется со скоростью несколько пикселей в кадр. Если вам удобнее привычные скорости, то можно умножить количество пикселей на частоту кадров FPS, и получим скорость = число пикселей в секунду. Каждому своё короче. :)

Так как, скорость самое простое в action script 3.0, то начнем с неё. Для того чтобы заставить двигаться объект, нужно создать этот объект. Создадим объект- машину с именем car. Для того чтобы не использовать enter_frame, мы создаём 2 кадра! они будут проигрываться по очереди.
Дальше пишем action script:
Сначала создаем переменную xmov = 0.5. Это будет скорость машинки 0.5 пикселей в кадр по оси Х. При частоте игры 60 FPS, это 30 пикселей в секунду.
Далее создаем переменную ymov = 0.1. Это будет скорость машинки 0.1 пикселей в кадр по оси У. При частоте игры 60 FPS, это 6 пикселей в секунду.

С помощью команд:
car.x += xmov;
car.y += ymov;
мы будем изменять положение машинки на величину xmov по Х и ymov по У.

С помощью команды:
car.rotation = Math.atan2(ymov,xmov)*180/Math.PI;
мы повернем нашу машину в том направлении, в котором она едет (если не понимаете арктангенс -> смотрите первый урок)

Вот собственно и всё о скорости.

Обо всём этом (и не только этом) смотрите подробнее в видеоуроке ниже.

Исходник: yadi.sk/d/AI4T4I3rF3qBE
Код ActionScript 3.0 из урока:

Всё подробно рассказано в видео :) Если будут какие-либо вопросы, пишите в комментариях к видео. Надеюсь, данный урок по реализации скорости в action script 3.0 в программе adobe flash, поможет вам в разработке игр. :)

Комментарии
  1. Егор

    Спасибо за уроки.
    Вопрос такой: для переменной xmov Вы указали тип переменной (Number), а для переменной ymov – тип переменной не указан. Я так понимаю, что программа сама опознает значение для ymov и относит к типу Number. Тогда нужно ли было указывать тип переменной для xmov?
    Понимаю, что вопрос на уровне “плинтуса”, но есть желание делать все более-менее осознано.
    С наступающим Новым годом! Удачи!

    • admin

      спасибо, с Наступающим! ;) Да, программа сама определяет. Наверно :D Я просто люблю минимализм. Указание типа удобно для чего – а для того что когда ставишь точку после переменной, то флеш посдвечивает команды, которые можно применить именно к этому типу данных.
      Допустим вы написали xmov : Number, и если вы напишите потом xmov. флеш предложит кучу команд после точки, а если не писали Number, то ничего не предложит. Но если самому написать код после точки, то всё равно будет работать :) В общем, для подсветки кода они удобны указания типов :)
      Кстати, вопрос хороший как раз. Бывают моменты когда флеш сам определяет ненужный тип данных. :)

      • Егор

        Спасибо за быстрый ответ. Если не против: буду немного “спрашивать” по ходу обучения (по делу, надеюсь). :)

        • admin

          да я только за :) буду отвечать по мере возможности :)

  2. Andrew

    Отличные уроки!!! Продолжайте в том же духе! Спасибо! :)

    • admin

      спасибо :) в течение недели думаю соберу урок по игре :) должен успеть)

  3. Дмитрий

    У меня вопрос: если на основной временной шкале я добавляю еще один кадр (как в видео получилось два кадра), то, как я понимаю в коде я могу не прописывать слушатель события Enter_Frame?

    • admin

      вроде того :) я тут не стал лепить Enter_Frame, просто потому что разбор его дальше, т.к. скорость проще :)
      Но, в данном случае – в первом кадре выполняется весь код, а во втором – совсем нет.
      Т.е. 1 кадр – машина едет, 2 – кадр машина стоит, снова 1 кадр – едет, 2 – стоит. и так бесконечно. Т.е. при частоте 60 кадров в секунду, машина переместиться 30 раз, а используя Enter_Frame – 60.
      И не удобность такого метода в том, что будет выполняться всегда ВЕСЬ код, а это практически никогда не нужно :)

  4. Кирилл

    У меня мой квадрат странно двигается .Я ему назначил управление .Что бы при нажатии влево он двигался влево по оси икс.Но когда я жму влево квадрат сначало делает небольшой рывок ,а только потом начинает нормально двигаться .Из за чего это ?И как сделать так что бы он вольно двигался

    • admin

      посмотри урок про пинг-понг. там вначале вроде я делал управление доской.

  5. Тарас

    Немножко не так, мне нужно чтобы при клику на шар, он переместился в заданные координаты и там остановился.

    • admin

      с какой скоростью и как он должен двигаться в эту точку?

  6. Тарас

    Просто по прямой – по “x” на маленькой скоростью, я потом себе поменяю, меня интересует как соединить между собой две функции.

  7. Тарас

    Да я это все видел, (для этого скачал флеш 5.5), методом тыка я там могу остановить, но нифига не понимаю, а когда начинаю чистить, не работает. Можешь убрать все лишнее и чтобы только при нажатии мыши, шар двигался по “x” и остановился в заданных координатах.

  8. Тарас

    Я по твоих уроках я могу создать все отдельно, но не могу между собой их соединить. Остановить движение я могу, не могу запустить.

Добавить комментарий для Дмитрий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">