Вам нужно будет проверить пересечение. Это называется HitTesting, и есть несколько способов приблизиться к этому. Но сначала - это не будет Событие больше, вам нужно будет проверить пересечение в каждом кадре. Поэтому, прежде всего, нам нужно создать нового слушателя Event.ENTER_FRAME.
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(e:Event):void
{
//Your code will go here
}
Во-вторых, мы проверяем наши объекты на пересечение их прямоугольников. Это нормально, если у вас есть квадратные или прямоугольные мувиклипы, если ваши MC более сложные (например, два круга), вам придется использовать другие способы получения этого перекрестка.
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(e:Event):void
{
if(MC1.getRect(this).intersects(MC2.getRect(this)))
{
//Two movieclips are intersecting
}
}
В-третьих, если это условие будет справедливо до тех пор, пока ваши MCs пересекаются, мы должны определить флаг, который скажет нам, если мы уже сделали то, что мы хотели сделать.
var alreadyHandled:Boolean = false;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(e:Event):void
{
if(MC1.getRect(this).intersects(MC2.getRect(this)))
{
if(!alreadyHandled)
{
doSomething();
alreadyHandled = true;
}
}
else
{
//When our movieclips are apart again, we reset our helping variable
alreadyHandled = false;
}
}
function doSomething():void
{
//We do what we want to do if our MCs are intersecting
}
Если вы хотите сделать что-то продолжительным, когда ваши MovieClips пересекаются, просто игнорирует, что помогает флагу вещи.
И, кстати, я предлагаю вам начинать имена ваших переменных строчной буквой. В AS3 только классы и интерфейсы имеют имена, начинающиеся с заглавной буквы.
спасибо. Все отлично работает, когда я делаю это в новом файле as3. Но мне нужно использовать это в документе класса Когда я использую addEventListener (Event.ENTER_FRAME, onEnterFrame); функция onEnterFrame (е: Event): аннулируются { если (MC1.getRect (это) .intersects (MC2.getRect (это))) { след ("пересекающей") } } здесь приходит ошибка: > Erron # 1034: невозможно преобразовать тип global @ 23b3a0d1 на > flash.display.DisplayObject. Возможно, вы знали, где проблема? – user2654186
Пожалуйста, укажите больше кода. Где начинаются ваши мувиклипы? У них есть пользовательские классы? – KumoKairo