Форум 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)
-   -   Вопрос о Listener (http://www.flasher.ru/forum/showthread.php?t=98137)

Ведьмак 06.07.2007 21:24

Вопрос о Listener
 
Господа! Такая проблема:

есть цикл, который вызывает n-раз функцию... функция аттачит на сцену мувик (т.е. получаем n-мувиков)... внутри этой же функции к мувику addListener(myListener)... myListener также описан и работает на конкретное событие...

а как мне узнать из листенера, который из этих n мувиков именно его вызвал? т.е. узнать его _name ?

совсем запарился уже, блин :wacko:

CorC 06.07.2007 21:31

В смысле к мувику листенер, что это?
Так то у слушателей есть такая вещь как target.

Ведьмак 06.07.2007 21:52

Объясню подробнее:

вот код самого листенера:
Код:

var listenerX:Object = new Object();
listenerX.onMotionFinished = function(objectTween:Tween) {
        var myFinish:Number = Math.random()*899;
        var myDuration:Number = 5+Math.random()*15;
        objectTween.continueTo(myFinish,myDuration);
};

вот остальное :
Код:

for (var i:Number = 0; i<6; i++) {
        makeHex();
}
function makeHex() {
        var hexClip:MovieClip = this.attachMovie("hexagon", "mc_hexagon"+i, this.getNextHighestDepth);
        hexClip._x = Math.random()*899;
        var hexTweenX:Tween = new Tween(hexClip, "_x", Regular.easeOut, hexClip._x, Math.random()*899, 15, true);
        hexTweenX.addListener(listenerX);
}

и внутри кода самого листенера мне нужно знать hexTweenX какого из mc_hexagon отработал...

etc 06.07.2007 22:05

А где создается listenerX? Что мешает подписать на события сам клип?

Ведьмак 06.07.2007 22:17

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

ListenerX создется не в данной функци..

Kikasso 06.07.2007 22:20

Вопрос на засыпку: а у абстрактного объекта?

etc 06.07.2007 22:21

Нет. Но что мешает его объявить у клипа?

Ведьмак 06.07.2007 22:33

мне нужно отследить событие onMotionFinished... у клипа его нет... зачем мне тогда объявлять листенер клипу?

etc 06.07.2007 22:41

Ещё раз: что мешает сделать это свойство-метод прямо у клипа?
Не надо никаких лишних объектов, каких-то «загадочных» listener-ом (которые являются просто объектом и ничем более).
А ещё в onMotionFinished передается ссылка на Tween, а у него есть свойство obj, ссылающиеся на объект, к которому был применен твин.

Kikasso 06.07.2007 22:44

Ну так проведите экперимент..
Код:

//var listenerX:Object = new Object();
var listenerX:MovieClip = this;

и далее без изменений.
Событие такое есть у MovieClipLoader'а, по наступлению этого события он запускает одноименную функцию у всех своих слушателей.

Просто пишем
Код:

function onMotionFinished(objectTween:Tween){
//...
}
hexTweenX.addListener( this );

Цитата:

Сообщение от __etc
«загадочных» listener-ов

Что макромедам мешало в хелпе нормальный пример привести, непонятно.


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

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