у меня аналогичная ситуация. Однако, если взять пример из приложения (ball_motion_04_click for trial.fla) то след остается. при этом заметил, что в моем проекте в поле "One item in library" виден кружок, в то время как в приложенном примере такого кружка нет. Вопрос знатокам, что не так? |
Опубликован: 07.11.2006 | Уровень: специалист | Доступ: платный
Лекция 8:
Обнаружение коллизий
Использование различных типов hitTest
- Откройте новый основной фильм и создайте в нем два фильма с именами movieClip1 и movieClip2. Придайте обоим фильмам неправильную форму и назовите их инстансы именами movieClip1_mc и movieClip2_mc соответственно.
- Мы будем использовать проверку по двум фильмам, поэтому введите следующий код в кадре 1 нового слоя с именем actions.
movieClipl_mc.onEnterFrame = function() { if (this.hitTest(movieClip2_mc)) { trace("hit"); } }; movieClip2_mc.onEnterFrame = function() { this._x = _xmouse; this._y = _ymouse; };
- Запустите ваш фильм и начните перетаскивать movieClip2. Вы увидите результат каждой проверки в окне Output.
- Закройте тестовый фильм. Теперь мы попробуем использовать проверку "фильм-точка" без shapeFlag, поэтому просто замените имеющийся код из шага 2 следующим кодом.
movieClipl_mc.onEnterFrame = function() { if (this.hitTest(movieClip2_mc._x, movieClip2_mc._y, false)) { trace("hit"); } }; movieClip2_mc.onEnterFrame = function() { this._x = _xmouse; this._y = _ymouse; };
- Чтобы было лучше видно, где Flash регистрирует столкновение, удалите заливку из movieClip2, чтобы остался только контур. Теперь проверьте ваш фильм.
Cтолкновение не регистрируется до тех пор, пока курсор не войдет (хотя он не виден) в граничную рамку вокруг movieClip1.
- Закройте тестовый фильм. Наконец, попытаемся использовать проверку "фильм-точка", но уже с использованием shapeFlag. Замените весь имеющийся код в кадре 1 следующим кодом.
movieClip1_mc .onEnterFrame = function () { if (this.hitTest(movieClip2_mc._x, movieClip2_mc._y, true)) { trace("hit"); } }; movieClip2_mc.onEnterFrame = function() { this._x = _xmouse; this._y = _ymouse; };
- Запустите ваш фильм. Перетаскивайте movieClip2 в разные места мышью и наблюдайте за происходящими столкновениями в окне Output.
Эксперименты с каждым и этих методов дадут вам представление о работе каждого из них, а также о том, какой именно метод нужно использовать в той или иной ситуации.