[11]: hitTestPoint

Приветствую вас, планетяне :) Сегодня расскажу вам как определять столкновения и пересечения объектов в action script 3.0. :) Было скажете вы)) Ну да, а сегодня по-новому. Второй простой метод определения столкновений – hitTestPoint. Этот метод определяет пересечение между:

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

Рассмотрим первый вариант. Допустим у нас есть на сцене мувиклип – object1, и чтобы определить его пересечение (всего что находить в пределах ограничивающего прямоугольника) с курсором мыши нужно написать вот это:

Рассмотрим второй вариант. Допустим у нас есть на сцене мувиклип – object2, и чтобы определить его пересечение (только содержание клипа) с курсором мыши нужно написать вот это:

Как вы поняли, разница в этих методах только лишь в слове true. В результате регистрации такого пересечения выполняется действие которые вы хотите :) Собственно всё)

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

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

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

Комментарии
  1. ilYYYa

    хм… хороший урок! НО!!! Как написать код, когда курсор НЕ находится над объектом? т.е. есть объект, в котором нарисованны примерно такие же круги, как и в видео. и когда курсор назодится вне объекта и производится клик, то добавляется другой объект из библиотеки, однако, когда курсор над объетом с кругами, то объект не добавляется… как так сделать???

    • admin

      создай ещё мувиклип с привязкой для as, с именем ball_mc, и допиши код:
      stage.addEventListener(MouseEvent.CLICK, mc);
      function mc (e:MouseEvent) {
      if (!object1.hitTestPoint(mouseX,mouseY)) {
      var ball = new ball_mc;
      ball.x = Math.random()*550;
      ball.y = Math.random()*400;
      addChild(ball);
      }
      }
      итого,при нажатии в пределах объекта 1 ничего добавляться не будет, а при нажатии где-то снаружи будут добавляться круги.
      http://yadi.sk/d/OZXUr0a9LLcoK

  2. Alexandrn

    Приветствую!
    А что нужно добавить в скрипт, чтобы не вылетала ошибка:
    TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект “null”.
    когда мы переходим в другие кадров на таймлайне, где уже нет нашего объекта для перетаскивания?

  3. Alexandrn

    Спасибо ОГРОМНОЕ, дружище! Супер!!! )))

    Я не помню, есть ли у тебя урок про ток как привинтить счётчик при собирании предметов (монеток например), который в конце уровня выдаст результат сколько чего собрано? И запомнит лучшие результаты.

    • admin

      про показ результатов сделать просто, посмотри пинг-понг. Я думаю из него понятно как это сделать. А вот сохранений я не делал нигде. Точнее они сделаны в дудле, но я ещё не записывал уроки по нему…

Добавить комментарий

Ваш 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="">