|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2010
Сообщений: 3
|
Ошибка при совместном использовании "Switch Case" и "addEventListener". Нужна помощь
Нужна помощь с ошибкой "TypeError: Error #2007: Параметр listener не должен быть равен нулю."
function test():void { for (var i:int = 0; i < 3; i++) { switch (i) { case 0: trace(i); break; case 1: trace(i); var qh:Sprite = new Sprite(); qh.addEventListener(MouseEvent.CLICK, qh_func); function qh_func(event:MouseEvent):void { trace("it work?"); } break; case 2: trace(i); break; } } } test(); |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
А зачем вы в case функцию вперли?
|
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
В том, что вы используете анонимные функции и пишете в кадрах =)
qh_func вынести из test хотя бы
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Довольно странная конструкция =)
|
|
|||||
Регистрация: Dec 2010
Сообщений: 3
|
Насколько я понимаю ошибку вызывает вот эта строчка: qh.addEventListener(MouseEvent.CLICK, qh_func);
Вопрос стоит в том, можно ли как-то добавить слушателя событий в Case, и объявлять и использовать функции в Case Как правильно сделать? |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
|
|
|||||
Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
|
Цитата:
|
|
|||||
Регистрация: Dec 2010
Сообщений: 3
|
Цитата:
Объясните, пожалуйста, в чем странность? Добавлено через 3 минуты Цитата:
Разжуйте новичку, почему нельзя объявлять функцию в case, пожалуйста |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
Цитата:
Но в чем разница между: for (var i:int = 0; i < 3; i++) { switch (i) { case 0: trace(0); break; case 1: trace(1); break; case 2: trace(2); break; } } ? Цитата:
|
|
|||||
Да что вы к этим кейсам прицепились?
человек убрал все лишнее, в риале у него там в кейсах не просто трэйсы. может анонимные функции и зло, но с ними иногда удобно. Если на то пошло, то интерпретируемый язык (даже если это байт-код) - тоже зло, а писать надо на ассемблере. И проблема не в том, что функция анонимна, а в том, что она в свитче содержится. Просто вынесите функцию за пределы switch(){} или если хочется там же, то внесите ее в addEventListener: Тогда, отписаться от события получится только внутри функции: Последний раз редактировалось udaaff; 08.12.2010 в 16:08. |
Часовой пояс GMT +4, время: 01:59. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|