Как определить индекс элемента в массиве, по которому щелкнули? - PullRequest
0 голосов
/ 04 января 2012

Скажем, у меня есть массив клипов (манекенов). Каждый манекен имеет прослушиватель событий и реагирует на щелчки. И когда кликнули по манекену, я хочу узнать индекс кликнувшей манекена.

Я только придумал это решение: пробежаться по всему массиву манекенов и выяснить, какой манекен является целью, затем выйти из цикла 'for' и присвоить некоторой глобальной переменной значение переменной-счетчика, но так приложение, которое я создаю, будет демонстрировать низкую производительность.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 04 января 2012

Вы хотите использовать Array.indexOf () или Vector.indexOf () . Предполагая, что dummies является вашей глобальной Array или Vector.<Dummy> переменной:

function onClick(evt:MouseEvent):void {
    var clickedDummy:Dummy = evt.target as Dummy;
    var dummyIndex:int = dummies.indexOf(clickedDummy);
    trace("You clicked the dummy at index " + dummyIndex);
} 

Некоторое время, проведенное в качестве справки с Справочником ActionScript 3.0 для платформы Adobe Flash Platform , вознаградит вас. Начните со ссылок здесь.

1 голос
/ 04 января 2012

Если вы добавляете макеты программным способом, вы можете создать класс, который расширяет MovieClip с именем dummy и передает значение индекса конструктору при инициализации.

Редактировать - это даст вам стартточка

import flash.display.MovieClip;
import flash.events.MouseEvent;

public class Dummy extends MovieClip {
    var id = -1;

    function Dummy(id:int) {
        this.id = id;
        this.addEventListener(MouseEvent.CLICK, onClick);
    }

    function onClick(evt:MouseEvent):void {
        // Handle click
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...