Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как узнать индекс через currentTarget? (http://www.flasher.ru/forum/showthread.php?t=124493)

vvvvvvf 01.05.2009 01:25

Как узнать индекс через currentTarget?
 
Доброго времени суток вопрос прямо в коде.

Код AS3:

var list:Array = [];
        for (var i:int = 0; i <= 5; i++) {
                list[i] = new Sprite();
                list[i].addEventListener(MouseEvent.ROLL_OUT, overPoint);
        }
        function overPoint(e:MouseEvent):void {
                // Как тут узнать номер индекса то есть i?
        }


iNils 01.05.2009 01:32

Только если внутри цикла запустить for и сравнивать значение массива с источником события. В самом источнике индекса нет.

Crash512 01.05.2009 01:32

Использовать, например, класс Delegate...

Код AS3:

package
{
 
public class Delegate
{
  public static function create(handler:Function,...args):Function
  {
    return function(...innerArgs):void
    {
      handler.apply(this,innerArgs.concat(args));
    }
  }
 }
}

Здесь подробней:

http://gorbatov.blogspot.com/2007/09...amescript.html

wvxvw 01.05.2009 01:56

@ Crash512:
Зачем такое кому-то советовать?..
Это нужно было в АС2, в АС3 это не то что излишество, это вообще плохо так делать.
Я это чудо еще на ас.орг видел, но на каждой странице повторятся как-то не тянет, и обязательно после каждых 10 сообщений должен найтись кто-то, кто в очередной раз предложит такую или подобную ересь использовать

@ vvvvvvf:
Собирайте таргетов в Dictionary и раздавайте ключи по номерам:
Код AS3:

var d:Dictionary = new Dictionary();
d[someSprite] = 1;
trace(d[someSprite]); // 1

и никакой порнографии...

vvvvvvf 01.05.2009 02:26

А можно что-то типа этого?

Помню на javascript что-то подобное так реализовывал смысл в том чтобы добавить в объект новое свойство которое можно менять.

Код AS3:

var list:Array = [];
        for (var i:int = 0; i <= 5; i++) {
                list[i] = new Sprite();
                list[i].addEventListener(MouseEvent.ROLL_OUT, overPoint);
                list[i].prortotype.id = i;
        }
        function overPoint(e:MouseEvent):void {
                e.currentTarget.id;
        }


BlooDHounD 01.05.2009 02:47

wvxvw, даже не знаю, почему мне это даже в АС2 ни разу не понадобилось.

vvvvvvf 01.05.2009 03:02

ну так что существуют подобные методы позволяющие записывать новые параметры в класс?

wvxvw 01.05.2009 03:12

Цитата:

Сообщение от BlooDHounD (Сообщение 816878)
wvxvw, даже не знаю, почему мне это даже в АС2 ни разу не понадобилось.

Ну, наверное просто использовал apply(), по крайней мере нет ничего нехорошего в использовании делегата в AS2.

Цитата:

Сообщение от vvvvvvf (Сообщение 816879)
ну так что существуют подобные методы позволяющие записывать новые параметры в класс?

Да, существуют, но для того, что вы пытаетесь сделать они не нужны.

vvvvvvf 01.05.2009 03:14

Цитата:

Сообщение от wvxvw (Сообщение 816880)
Да, существуют, но для того, что вы пытаетесь сделать они не нужны.

Дайте пожалуйста пример.

wvxvw 01.05.2009 03:17

Ну так вы же сразу его и попытаетесь применить к своему коду, и, с моей стороны это будет вам медвежья услуга.

Анекдот в тему:
* в автобусе *
Бабушка:
- молодой человек, может быть вы встанете?
Молодой человек:
- ага, конечно, сейчас я встану, а ты тут же сядешь!


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

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