массив не будет работать ActionScript 3 - PullRequest
0 голосов
/ 25 мая 2010

Я все перепробовал. Массивы довольно просты, поэтому я не знаю, почему это не работает:

var menuList:Array = [menu_bag_mc,menu_chips_mc,menu_coke_mc,menu_cup_mc,menu_deodorant_mc,menu_fork_mc,menu_knife_mc,menu_lighter_mc,menu_milk_mc,menu_pill_mc,menu_rings_mc,menu_shampoo_mc,menu_spoon_mc,menu_straw_mc,menu_toothbrush_mc,menu_trashbag_mc,menu_water_mc];

function captureAllClicks(event:MouseEvent):void
{
    trace(menuList.indexOf(event.target));
}

stage.addEventListener(MouseEvent.CLICK, captureAllClicks);

Каждый раз, когда я нажимаю на любой из элементов на сцене (всем из которых даны имена экземпляров, перечисленных выше. Каждый представляет собой мувиклип, содержащий кнопку), я получаю след -1. ПОЧЕМУ?! * * 1004

edit2

Что должно произойти:

for each (var mc:MovieClip in menuList) mc.addEventListener(MouseEvent.CLICK, createContent);


//right here, i need to make a variable that I can put in the "addchild" so that
//for every one of the list items clicked, it adds a movieclip child with
//the same name (such as menu_bag_mc from above) with "_frame" appended.
var framevar:MovieClip = menuList[i] += "_frame";

function createContent(event:MouseEvent):void {
    if(MovieClip(root).currentFrame == 850) {
    while(MovieClip(root).numChildren > 1)
    {
        MovieClip(root).removeChild(MovieClip(root).getChildAt(MovieClip(root).numChildren - 1));
    }
MovieClip(root).addChild (framevar);
MovieClip(root).addChild (closeBtn);
}
else {
MovieClip(root).addChild (framevar);
MovieClip(root).addChild (closeBtn);
MovieClip(root).gotoAndPlay(806);
}
} 

Если я не могу сделать переменную, то нет смысла для всего «для каждого» оператора, который вы собираете вместе ... на самом деле нет никакой точки для массива, потому что мне все равно придется создать 20 строк кода каждый отдельный. Какой смысл иметь массив, если вы не можете сделать из него переменные?

Ответы [ 2 ]

1 голос
/ 25 мая 2010

потому что совершенно очевидно event.target, кажется, не в menuList.

наиболее вероятное объяснение состоит в том, что у ваших MovieClip s есть дети, на которых нажимают и, следовательно, event.target.

Вам, вероятно, следует установить mouseChildren на false на всех этих MovieClip с. Или вы можете зарегистрировать отдельные обработчики для каждого мувиклипа следующим образом:

function captureAllClicks(event:MouseEvent):void {
    trace(menuList.indexOf(event.currentTarget));
}
for each (var mc:MovieClip in menuList) mc.addEventListener(MouseEvent.CLICK, captureAllClicks);

Greetz
back2dos

0 голосов
/ 25 мая 2010

почему бы вам не попробовать event.currentTarget вместо event.target

Кроме того, чтобы помочь себе решить проблему, почему бы вам просто не отследить event.target и проследить event.currentTarget. Вы также можете перебрать свой массив и проследить все объекты в нем. Тогда получите лучшее визуальное представление о том, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...