Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.07.2009, 16:41
ilor вне форума Посмотреть профиль Отправить личное сообщение для ilor Найти все сообщения от ilor
  № 1  
Ответить с цитированием
ilor

Регистрация: Jul 2009
Сообщений: 35
По умолчанию Не удаляет listener

Код AS3:
var img1:image1 = new image1(0, 0);
var img2:image2 = new image2(0, 0);
 
var mc:MovieClip = new MovieClip();
addChild(mc);
 
var image:Bitmap = new Bitmap(img1);
mc.addChild(image);
 
mc.addEventListener(MouseEvent.CLICK, changeImage);
function changeImage(e:MouseEvent){
	trace("Смена картинки...");
	this.image.bitmapData.draw(img2);
	mc.removeEventListener(MouseEvent.CLICK, changeImage);
}
Не хочет удалять листенер. После клика, картинка меняется на img2,затем через секунду обратно на img1 и прослушка остается активной. Пожалуйста, помогите...

Старый 25.07.2009, 17:14
WRC_S вне форума Посмотреть профиль Отправить личное сообщение для WRC_S Посетить домашнюю страницу WRC_S Найти все сообщения от WRC_S
  № 2  
Ответить с цитированием
WRC_S
[+6 23.11.09]
 
Аватар для WRC_S

Регистрация: Jun 2009
Адрес: Россия
Сообщений: 318
Отправить сообщение для WRC_S с помощью ICQ
если я правильно понил или понимаю, то листнера нельзя удалить из самого себя
mc.removeEventListener(MouseEvent.CLICK, changeImage);-находится внутри листнера который хош удалить!

Старый 25.07.2009, 17:28
ilor вне форума Посмотреть профиль Отправить личное сообщение для ilor Найти все сообщения от ilor
  № 3  
Ответить с цитированием
ilor

Регистрация: Jul 2009
Сообщений: 35
А как можно исправить?

Старый 25.07.2009, 18:00
alekslitvinenk вне форума Посмотреть профиль Отправить личное сообщение для alekslitvinenk Посетить домашнюю страницу alekslitvinenk Найти все сообщения от alekslitvinenk
  № 4  
Ответить с цитированием
alekslitvinenk
 
Аватар для alekslitvinenk

Регистрация: Oct 2005
Адрес: Москва
Сообщений: 491
Отправить сообщение для alekslitvinenk с помощью ICQ Отправить сообщение для alekslitvinenk с помощью AIM Отправить сообщение для alekslitvinenk с помощью Skype™
Вставил Ваш код - у меня после клика слушатель удаляется.

Старый 25.07.2009, 22:41
ripeLime вне форума Посмотреть профиль Отправить личное сообщение для ripeLime Найти все сообщения от ripeLime
  № 5  
Ответить с цитированием
ripeLime
 
Аватар для ripeLime

Регистрация: Jul 2009
Сообщений: 25
Цитата:
Сообщение от WRC_S Посмотреть сообщение
если я правильно понил или понимаю, то листнера нельзя удалить из самого себя
mc.removeEventListener(MouseEvent.CLICK, changeImage);-находится внутри листнера который хош удалить!
Вы неправильно поняли.

Попробуйте
Код:
mc.removeEventListener(MouseEvent.CLICK, changeImage);
заменить на
Код:
e.target.removeEventListener(MouseEvent.CLICK, changeImage);

Старый 26.07.2009, 01:09
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
e.target типа Object и не имеет метода removeEventListener

лучше сделать так

Код AS3:
(event.currentTarget as IEventDispatcher).removeEventListener(event.type, changeImage);
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 26.07.2009, 01:59
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
dimarik, в таком случае можно отписаться «не там»

Старый 26.07.2009, 03:13
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 8  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
etc, а мне кажется как раз-таки именно "там", где подписался.

Старый 26.07.2009, 04:27
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 9  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Код AS3:
(event.currentTarget as IEventDispatcher).removeEventListener(event.type, arguments.callee);
Гарантированная отписка чего угодно от чего угодно
__________________
тонкий тролль, осеянный благодатью

Старый 26.07.2009, 13:41
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 10  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Цитата:
Сообщение от dimarik Посмотреть сообщение
e.target типа Object и не имеет метода removeEventListener

лучше сделать так

Код AS3:
(event.currentTarget as IEventDispatcher).removeEventListener(event.type, changeImage);
Если бы e.target не имело метода removeEventListener, то никаким приведением типов вы его не вызвали бы!
__________________
Лучше быть умным и иногда делать глупости, чем глупым и постоянно умничать!

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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