AS3 - Массив, содержащий мувиклипы, indexOf - PullRequest
0 голосов
/ 26 октября 2011

У меня есть этот массив и обработчики событий:

var btnArr:Array = new Array(aBtn, bBtn, cBtn);
aBtn.addEventListener(MouseEvent.MOUSE_OVER, blah);
bBtn.addEventListener(MouseEvent.MOUSE_OVER, blah);
cBtn.addEventListener(MouseEvent.MOUSE_OVER, blah);

Где aBtn, bBtn и cBtn являются объектами MovieClip.

Когда я пытаюсь получить индекс одного из них, во время события:

function blah(e:Event) {
     var i = btnArr.indexOf(e.target);
     trace(i)

Так почему этот след каждый раз возвращает undefined?

Ответы [ 4 ]

1 голос
/ 26 октября 2011

Используйте e.currentTarget, e.target может быть ребенком. Или, как говорит Тобиас, установите для mouseChildren значение false

0 голосов
/ 26 октября 2011

Массив indexOf должен вернуть -1, если не может найти элемент.

Поскольку вы получаете неопределенное значение, вы уверены, что btnArr - это массив, который вы создали ранее?

0 голосов
/ 26 октября 2011

Этот код работает для меня.Я получаю 0,1,2 с уважением.Поэтому я буду предполагать, что вы не дали своим кнопкам MovieClip имя экземпляра aBtn, bBtn, cBtnКоторый будет неопределенным.Хотя, это должно привести к ошибке времени компиляции.И, пожалуйста, научитесь печатать все ваши вары, это поможет вам только в долгосрочной перспективе.

var i:int = btnArr.indexOf(e.target);
0 голосов
/ 26 октября 2011

Где вы инициализируете кнопки? Вы пытались отследить название MovieClip? Возможно, у вашего MovieClip есть дети, которые отправляют ваше событие. Попробуйте установить mouseChildren = false.

...