Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   event listener: передача параметра (http://www.flasher.ru/forum/showthread.php?t=113736)

lizards 07.07.2008 16:24

event listener: передача параметра
 
делаю галерею. использую массив спрайтов (Sprite) thumbnails.
далее:

Код:

for (i = 0; i < n; i++) {
  thumbnails[i].addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
}

можно ли каким-то образом передавать i как параметр в mouseDownHandler?
чтобы к примеру mouseDownHandler заключался в банальном распечатывании i для каждого thumbnails[i]

Greenish 07.07.2008 16:31

думаю что нет. сделайте класс Trumbnails от Спайта и храните i в каждом экземпляре. а потом через target у eventa забирайте.

etc 07.07.2008 19:28

Сделать хеш thumbnail <-> n, а в обработчике брать target и искать в хеше индекс.

Сайлас 07.07.2008 19:46

Замыкание.
.addEventListener(EVENT, function x(e:Event){mouseDownHandler(e,params,x)});

etc 07.07.2008 19:51

Цитата:

Сообщение от Сайлас (Сообщение 750670)
Замыкание.
.addEventListener(EVENT, function x(e:Event){mouseDownHandler(e,params,x)});

Наглядный пример того, как делать не надо.

lizards 07.07.2008 20:29

Цитата:

Сообщение от __etc (Сообщение 750663)
Сделать хеш thumbnail <-> n, а в обработчике брать target и искать в хеше индекс.

как это — сделать хеш?

Greenish 07.07.2008 20:35

массив наверное

etc 07.07.2008 23:36

Цитата:

Сообщение от lizards (Сообщение 750688)
как это — сделать хеш?

Код:

var hash:Dictionary = new Dictionary();



for (var i:uint = 0; i < n; i++) {
  var thumb:InteractiveObject = thumbnails[i] as InteractiveObject;
  thumb.addEventListener(MouseEvent.MOUSE_DOWN, this.mouseDownHandler);
  hash[thumb] = i;
}



private function mouseDownHandler(event:MouseEvent):void {
    var target:InteractiveObject = event.target as InteractiveObject;

    trace(hash[target]);
}


Сайлас 08.07.2008 00:46

Цитата:

Сообщение от __etc (Сообщение 750672)
Наглядный пример того, как делать не надо.

Ну это ваше личное мнение. Наглядный пример ограниченности взглядов :)

etc 08.07.2008 01:26

Цитата:

Сообщение от Сайлас (Сообщение 750740)
Ну это ваше личное мнение. Наглядный пример ограниченности взглядов :)

Хорошо. Как будете отписываться от такого «обработчика»? И где передача, собственно, индекса, в вашем коде?


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

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