Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как узнать индекс мувика находящего в массиве и по которому кликнули? (http://www.flasher.ru/forum/showthread.php?t=147147)

vetzp 27.11.2010 11:36

как узнать индекс мувика находящего в массиве и по которому кликнули?
 
мувики загнаны в массив и выведены на экран, по ним кликаю...
как узнать индесный номер в массиве того, по которому кликнул?

iNils 27.11.2010 11:43

Код AS3:

массив.indexOf (объект)


vetzp 27.11.2010 11:55

Цитата:

Сообщение от iNils (Сообщение 952876)
Код AS3:

массив.indexOf (объект)


пробую, не получается...
может Я неправильно объявляю вот это:
Код AS3:

addEventListener(MouseEvent.CLICK, btnStartClick);

массив у меня Sprites
а объект какой туда указать?

iNils 27.11.2010 11:56

по которому кликнули

vetzp 27.11.2010 12:05

Цитата:

Сообщение от iNils (Сообщение 952879)
по которому кликнули

так Я ж не знаю по которму из них кликнули...
из массива мувиков Я их вот так вывожу на экран:
Код AS3:

for ( i = 0; i<2; i++) {
        Vika = new DurikArray[i] as MovieClip;
        Sprites.push(Vika);
        (Sprites[i] as MovieClip).x = 100+i*200;
        (Sprites[i] as MovieClip).y = 200;
        (Sprites[i] as MovieClip).gotoAndStop(1);
        (Sprites[i] as MovieClip).scaleX = 1;
        (Sprites[i] as MovieClip).scaleY = 1;
        addChildAt(Sprites[i] as MovieClip, 0);
}

какой у меня тут объект получается?

goodguy 27.11.2010 12:19

Код AS3:

trace(Sprites.indexOf(e.currentTarget));

вот так это узнается

vetzp 27.11.2010 12:24

Цитата:

Сообщение от goodguy (Сообщение 952881)
Код AS3:

trace(Sprites.indexOf(e.currentTarget));

вот так это узнается

не работает, все время выдает -1

может у меня тут что-то неправильно:
Код AS3:

addEventListener(MouseEvent.CLICK, this.btnStartClick);

подскажите плиз :drinks:

goodguy 27.11.2010 12:26

тут все правильно. Если выдает -1, значит объекта нет в массиве.
В таком случае я бы для начала оттрейсил сам массив, чтобы убедиться, что файлы туда вообще попали. А потом бы уже копал в сторону определения индекса

Надо смотреть весь код, чтобы сказать точнее

vetzp 27.11.2010 12:32

Цитата:

Сообщение от goodguy (Сообщение 952884)
тут все правильно. Если выдает -1, значит объекта нет в массиве.
В таком случае я бы для начала оттрейсил сам массив, чтобы убедиться, что файлы туда вообще попали. А потом бы уже копал в сторону определения индекса

Надо смотреть весь код, чтобы сказать точнее

Код AS3:

for ( i = 0; i<2; i++) {
        Vika = new DurikArray[i] as MovieClip;
        Sprites.push(Vika);
        (Sprites[i] as MovieClip).x = 100+i*200;
        (Sprites[i] as MovieClip).y = 200;
        (Sprites[i] as MovieClip).gotoAndStop(1);
        (Sprites[i] as MovieClip).scaleX = 1;
        (Sprites[i] as MovieClip).scaleY = 1;
        addChildAt(Sprites[i] as MovieClip, 0);
}
        addEventListener(MouseEvent.CLICK, this.btnStartClick);
 
        private function btnStartClick(event:MouseEvent) : void {
                i = Sprites.indexOf(event.currentTarget);
                trace(i);
        }

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

-De- 27.11.2010 12:35

Вытяните обьявление метода куда надо (из метода, где цикл и уж точно из цикла).
Код AS3:

private function btnStartClick(event:Event):void {
var myInd:int = Sprites.indexOf(event.currentTarget);
...

Также лучше
Код AS3:

for ( i = 0; i<2; i++) {
        Vika = new DurikArray[i] as MovieClip;
        Sprites.push(Vika);
        Vika.x = 100+i*200;
        Vika.y = 200;
        Vika.gotoAndStop(1);
        //Vika.scaleX = 1;//если у вас не ставится иное в конструкторе, то они и так 1
        //Vika.scaleY = 1;
        addChildAt(Vika, 0);
}



Часовой пояс GMT +4, время: 13:36.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.