Несколько событий столкновения в Action Script 3.0 - PullRequest
0 голосов
/ 02 ноября 2011

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

Дело в том, что у меня есть около 10 яиц и 7 линий, и получение условий для проверки, касается ли яйцо линии, и если все яйца касаются линии, это ОЧЕНЬ много (я имею в видусерьезно, я уже пробовал это) кода.

Это просто объединение сотен условных и слушателей событий вместе.

У кого-нибудь есть более красивое решение?Спасибо за любые комментарии: D

1 Ответ

1 голос
/ 02 ноября 2011

Вы можете использовать вложенные циклы for для проверки события enterframe.Это может поглотить процессор, поэтому убедитесь, что вы запускаете цикл только при необходимости.

Вот простой пример вложенного цикла:

var eggs:Array = [e0,e1,e2,e3,e4,e5,e6,e7,e8,e9];
var lines:Array = [l0,l1,l2,l3,l4,l5,l6];
var eggLen:int = eggs.length;
var lineLen:int  = lines.length;
var egg:MovieClip;
var line:MovieClip;

addEventListener(Event.ENTER_FRAME, enterFrameHandler);

function enterFrameHandler(e:Event):void {
    EggLoop:for (var i:int = 0; i<eggLen; i++) {
        egg = eggs[i];
        LineLoop:for (var j:int = 0; j<lineLen; j++) {
            line = lines[j];
            if (egg.hitTestObject(line)) {
                trace("Egg: " + egg + " just hit Line: " + line);
                break LineLoop;
                // if you want to break the entire loop use:
                // break EggLoop;
            }
        }
    }
}
...