Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Массив ссылок на объекты (http://www.flasher.ru/forum/showthread.php?t=83808)

Zmet 16.08.2006 17:54

Массив ссылок на объекты
 
Уже перелопатила несколько учебников и никак не могу понять, есть ли в АС возможность создать массив ссылок на объекты, например принадлежащие одному мувику? или массив кнопок (как в С++)?

Если нет, то как решается подобная проблема: есть достаточно большое количество однотипных объектов (например, кнопок), которые одинаково реагируют на одно и то же событие (например, движение мыши). Действия при наступлении события описываются в отдельной функции, а вот реакцию на это событие приходится описывать отдельно для каждого объекта. А если их сто?!

Пробовала делать через листенера, но ведь он не может определить, какой конкретно объект из списка вызвал событие. Или может? Если может, то как получить на него ссылку.

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

CCCPirate 16.08.2006 18:01

создай свой класс

Zmet 16.08.2006 18:06

Цитата:

Сообщение от CCCPirate
создай свой класс

А попроще никак? Т.е. массивов не бывает?

etc 16.08.2006 18:12

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

Zmet 16.08.2006 18:23

Цитата:

Сообщение от __etc
Zmet, используй EventDispatcher, там есть возможность определения объекта, отославшего событие.

Спасибо. Пока не знаю, правда, что это такое. Пойду в справке поковыряюсь :)

etc 16.08.2006 18:29

Класс mx.events.EventDispatcher
http://livedocs.macromedia.com/flash.../00003473.html

CCCPirate 16.08.2006 18:34

объект может передавать свое _name, так же можно просмотреть все объекты внутри клипа: (for var name in clip) { trace (name) ...}

я не совсем понял в чем собственно задача? (что неообходимо реализовать?)

Zmet 16.08.2006 18:34

Мерси

Zmet 16.08.2006 18:52

Цитата:

Сообщение от CCCPirate
объект может передавать свое _name, так же можно просмотреть все объекты внутри клипа: (for var name in clip) { trace (name) ...}

я не совсем понял в чем собственно задача? (что неообходимо реализовать?)

Задача описана вначале, кажется довольно понятно :confused:
Есть сто разных картинок. При нажатии на любую картинку ее прозрачность становится равной 50. Как описать эти действия для всех картинок сразу.

Есть:
Код:

pict1.onSobytie=function(){
pict1._alpha=50;
}; //и так сто раз, для каждой картинки

Хочу:
Код:

pict[i].onSobytie=function(){
pict[i]._alpha=50;
};

//событие наступает только для одного объекта, но описывается сразу для всех

etc 16.08.2006 18:55

Код:

import mx.events.EventDispatcher;
EventDispatcher.initialize(container_mc);
for (var i in container_mc) {
    var mc = MovieClip(container_mc[i]);
    if (mc!=null) {
        mc.onAnyEvent = function(event) {
              this._alpha = 50;
              trace(['Event receiver: '+this,'Event sender: '+event.target]);
        }
        container_mc.addEventListener("onAnyEvent",mc); // если используется EventDispatcher
    }
}
container_mc.dispatchEvent({type:'onAnyEvent'});

Пример.


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

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