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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.10.2009, 01:35
Punk T-34 вне форума Посмотреть профиль Отправить личное сообщение для Punk T-34 Посетить домашнюю страницу Punk T-34 Найти все сообщения от Punk T-34
  № 1  
Ответить с цитированием
Punk T-34
 
Аватар для Punk T-34

Регистрация: Aug 2005
Адрес: Польша
Сообщений: 376
Записей в блоге: 3
Отправить сообщение для Punk T-34 с помощью Skype™
По умолчанию onMouseMove не прекращает работу.

есть маленький кусочек кода.
Замысел такой: при наведении курсора мышки на определённую зону активируется добавляется объект myListener для мышки. Когда мышку уводим из зоны — myListener удаляется и движения мышки больше не считываются.
Проблема в том, что работает только первая часть кода — при наведении добавляется myListener, но когда уводим, то myListener почему-то не удаляется и движения мыши продолжают считываться по всей области экрана. Не понимаю, почему не работает onRollOut?

Код AS1/AS2:
 activeZone.onRollOver = function() { var myListener:Object = new Object();
myListener.onMouseMove = function() { здесь обработчик движений мышки };
Mouse.addListener(menuListener);
};
activeZone.onRollOut = function() { Mouse.removeListener(myListener);
};
__________________
Швейцарский нож в дизайне и рекламе:
• NORDSKILL •


Последний раз редактировалось iNils; 02.10.2009 в 12:13.
Старый 02.10.2009, 11:52
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 2  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
Код AS1/AS2:
activeZone.onRollOver = function() { 
	this.onMouseMove = function() { 
		trace("здесь обработчик движений мышки") 
	};
}
activeZone.onRollOut = function() { 
	delete this.onMouseMove
};

Старый 03.10.2009, 02:35
Punk T-34 вне форума Посмотреть профиль Отправить личное сообщение для Punk T-34 Посетить домашнюю страницу Punk T-34 Найти все сообщения от Punk T-34
  № 3  
Ответить с цитированием
Punk T-34
 
Аватар для Punk T-34

Регистрация: Aug 2005
Адрес: Польша
Сообщений: 376
Записей в блоге: 3
Отправить сообщение для Punk T-34 с помощью Skype™
это оказалось проще, чем я думал, спасибо!
вот только я теперь не понимаю, зачем тогда создавать объект для этого?
зачем вообще в хелпе по флешу создают оъект. Какая от него практическая польза?
__________________
Швейцарский нож в дизайне и рекламе:
• NORDSKILL •

Старый 03.10.2009, 03:40
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Когда мы регистрируем мувик в качестве объекта-слушателя, то мы-то в своем проекте знаем, что этот мувик никуда не денется со сцены и слушание будет производится всегда, когда в этом есть необходимость и пока мы явно не "отпишем" его через removeListener. (Хотя абстрактный мувик может и исчезнуть со сцены по замыслу автора - быть ремувнутым, если его создали через createEmptyMovieClip или приаттачили, или просто в нужном кадре его не будет, если он создан в авторской среде).

Но, когда серьезные дяди пишут документацию, неизвестно, будет или нет девелопером-новичком этот самый факт присутствия отслеживаться. Значит писать в документации - "назначьте слушателем любой мувик на сцене" - нельзя. Документация к коммерческому продукту - вещь не менее серьезная, чем сам продукт. Поэтому в хелпе никто не будет обговаривать всякий раз необходимость держать постоянно на сцене мувик, который попутно является еще и слушателем событий. Просто строго создается специальный объект, который и регистрируется слушателем.


Последний раз редактировалось mooncar; 03.10.2009 в 04:10.
Старый 03.10.2009, 15:38
Punk T-34 вне форума Посмотреть профиль Отправить личное сообщение для Punk T-34 Посетить домашнюю страницу Punk T-34 Найти все сообщения от Punk T-34
  № 5  
Ответить с цитированием
Punk T-34
 
Аватар для Punk T-34

Регистрация: Aug 2005
Адрес: Польша
Сообщений: 376
Записей в блоге: 3
Отправить сообщение для Punk T-34 с помощью Skype™
а ясно, спасибо, mooncar.
P.S. Стиль изложения текста похож на мой — как себя читал
__________________
Швейцарский нож в дизайне и рекламе:
• NORDSKILL •

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от Punk T-34 Посмотреть сообщение
Проблема в том, что работает только первая часть кода — при наведении добавляется myListener, но когда уводим, то myListener почему-то не удаляется и движения мыши продолжают считываться по всей области экрана. Не понимаю, почему не работает onRollOut?
Потому что myListener отсутствует в области видимости метода onRollOut объекта activeZone;

Код AS1/AS2:
activeZone.onRollOver = function() {
	var myListener:Object = new Object();
	myListener.onMouseMove = function() {
		// do something
	};
	Mouse.addListener(myListener);
};
 
activeZone.onRollOut = function() {
	trace(myListener);// undefined
	Mouse.removeListener(myListener);
};
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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