Несколько хитов AS3

У меня на сцене есть перетаскиваемый мувиклип. Когда он попадает в другой объект/видеоклип, появляется слово: «удар». Все идет нормально. Но я хочу, чтобы перетаскиваемый мувиклип попадал в несколько других объектов с разными реакциями (например, загрузка другого мувиклипа или что-то в этом роде).

Это код, который у меня есть для самой популярной части:

import flash.events.Event;

this.addEventListener( Event.ENTER_FRAME, handleCollision)

function handleCollision( e:Event ):void
{
    if(blok3.hitTestObject(schaap))

       {
           output_txt.text = "HIT"
       }
       else
       {
           output_txt.text = ""
       }

}

SCHAAP — это перетаскиваемый объект, блок3 — это объект, который вызывает слово «удар», когда перетаскиваемый объект сталкивается с ним.

Я надеюсь, что вы, ребята, можете мне помочь!


person David Hakkert    schedule 11.10.2012    source источник
comment
Я собираюсь предложить использовать switch/case вместо if else, поскольку все эти операторы if будут намного сложнее для вашего процессора, чем операторы switch/case, но это только мое мнение.   -  person Ryan Hollingsworth    schedule 11.10.2012


Ответы (1)


У вас уже есть триггер и вывод для одного столкновения (если blok3 htis schaap, вывод «HIT»), поэтому простым расширением будет добавление еще одного оператора if ниже существующего:

function handleCollision( e:Event ):void
{
    if(blok3.hitTestObject(schaap))    
    {
        output_txt.text = "HIT"
    }
    // else if statement to check for collision on second object
    else if(differentBlok.hitTestObject(schaap))
    {
        output_txt.text = "SMASH"
    }
    else
    {
        output_txt.text = ""         
    }

}

Отсюда вы можете посмотреть на хранение объектов в массивах и перебор массива для проверки на наличие коллизий, вместо того, чтобы иметь отдельный оператор if для каждого из них.

person Simon McArdle    schedule 11.10.2012