![]() |
Передача переменной в функцию через слушатель
Привет всем!
Есть такой примерный код: Код AS3:
А вот немного модифицированный код: Код AS3:
test TypeError: Error #1006: addEventListener is not a function. at Untitled_fla::MainTimeline/frame1() В чем я не прав?:o |
Интересует тоже вопрос, хотя по-моему никак не передать)
Код AS3:
Цитата:
Ничего на эту тему не нашел) хотя может что пропустил)))))))))) ------------------- хотя почему бы для obj не указать дополнительное свойство. Например: Код AS3:
Код AS3:
|
лучше через слушатель ничего не передавать, это не совсем правильно, но можно либо колбек сделать анонимный или внутри колбека поместить еще одну функцию и ей уже передавать эвент, но это все не есть правильно
|
Цитата:
Через obj вариант, только в основном коде у меня используется не MouseEvent который e:target передавать не умеет. |
вопрос а что у вас
Код AS3:
|
точнее проблема получается в создании msg переменной внутри объекта.
просто Код AS3:
6: x:150 y:250 z:450 А если присвоить Код AS3:
1119: Access of possibly undefined property msg through a reference with static type org.papervision3d.objects.primitives:Plane. |
Цитата:
|
Делайте свой эвент, отправляйте его с любыми параметрами, слушаете его где надо и спокойно получается параметры.
|
Цитата:
|
Цитата:
Цитата:
Код AS3:
|
Код AS3:
Код AS3:
|
Сейчас попробую)
Добавлено через 55 минут хм...класс работает, спасибо) Но как мне его использовать в качестве реагирования на клик и наведение/отведение мышки? |
В качестве реагирования на клик и наведение/отведение мышки нужно использовать функцию принимающую параметр MouseEvent
Код AS3:
|
Когда срабатывает колбек то ситуации в которой ваша переменная объявленная в классе слушателе или в классе диспатчере недоступна просто не может быть потому что обе эти области видимости вам будут извесны в колбеке, первая - this, вторая - Event#target / Event#currentTarget - вы просто не там ищите. А передать дополнительные параметры в функцию у которой сигнатура это не позволяет не возможно никак, более того, это протовоестесственно и абсолютно противоречит здравому смыслу.
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Большое спасибо! Я уже сказал что не понял как мне воспользоваться этими советами и было бы здорово если ответ был бы немного доступнее. Я не претендую на профи в cs3. А ваш совет все равно что отправить меня читать хелп по as3, там ответ есть, я не сомневаюсь. Для чего тогда этот форум?
|
Обстановка накаляется?))) Давайте-ка все выдохнем.
uglan, дело в том что Вы обрабатываете не просто вообще событие, а совершенно конкретное событие наведения курсора на объект. Вы подписались на него. Именно на него. При наступлении именно конкретно этого события создается и рассылается совершенно конкретный Объект События. Этот самый Объект События является ЕДИНСТВЕННЫМ и предопределенным параметром, передаваемым в функцию-обработчик ЭТОГО КОНКРЕТНОГО события. Ваш обработчик не должен принимать в качестве параметра ничего, кроме объекта события именно того Класса, на который он подписан. В данном случае это MouseEvent, и событие Мыши никак не предполагает передачу сообщений - это мышь, а не окно чата. Вы используете стандартное событие, и не пытайтесь его перестроить под свое видение - оно идеально для тех целей, для которых создано. О наведении мыши на объект оно рассказывает абсолютно все подробности. Но Вам хочется совершенно другого - Вам не нужны параметры мыши, Вам нужны параметры объекта. Он - в переменной target. Вот теперь думаем. Раз Вы не можете завести нужное поле msg:String у этих объектов (их Класс не динамический), то наверное стоит воспользоваться утилитой Dictionary, позволяющей "привязать" к любому Объекту какое-то значение или ссылку. Код AS3:
Код AS3:
|
Вау!) Спасибо. Вот теперь действительно понятная и полезная информация.
Попробовал — все работает как надо))) СПАСИБО! |
Wolsh, спасибо, очень понятно написал, попробовала пример сделать, такая же проблема была. Получилось все в лучшем виде. Респект тебе и уважуха :)
|
|
| Часовой пояс GMT +4, время: 17:01. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.