2013-09-02 5 views

ответ

0

Вам нужно будет проверить пересечение. Это называется 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 только классы и интерфейсы имеют имена, начинающиеся с заглавной буквы.

+0

спасибо. Все отлично работает, когда я делаю это в новом файле as3. Но мне нужно использовать это в документе класса Когда я использую addEventListener (Event.ENTER_FRAME, onEnterFrame); функция onEnterFrame (е: Event): аннулируются { если (MC1.getRect (это) .intersects (MC2.getRect (это))) { след ("пересекающей") } } здесь приходит ошибка: > Erron # 1034: невозможно преобразовать тип global @ 23b3a0d1 на > flash.display.DisplayObject. Возможно, вы знали, где проблема? – user2654186

+0

Пожалуйста, укажите больше кода. Где начинаются ваши мувиклипы? У них есть пользовательские классы? – KumoKairo

0

спасибо. Все отлично работает, когда я делаю это в новом файле as3. Но мне нужно использовать это в классе документа Когда я использую

addEventListener(Event.ENTER_FRAME, onEnterFrame); 

function onEnterFrame(e:Event):void 
{ 
    if(MC1.getRect(this).intersects(MC2.getRect(this))) 
    { 
     trace("intersects") 
    } 
} 

Erron#1034: cannot convert type [email protected] on flash.display.DisplayObject.

Возможно, вы знаете, где проблема?

 Смежные вопросы

  • Нет связанных вопросов^_^