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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.09.2010, 21:57
DenverZ вне форума Посмотреть профиль Отправить личное сообщение для DenverZ Найти все сообщения от DenverZ
  № 31  
Ответить с цитированием
DenverZ

Регистрация: May 2010
Сообщений: 59
спасибо всем за помощь, кто помогал ;-)
решил не пользоваться кадрами совсем... буду работать на чистом AC3

Старый 22.10.2010, 13:31
vic551 вне форума Посмотреть профиль Отправить личное сообщение для vic551 Найти все сообщения от vic551
  № 32  
Ответить с цитированием
vic551

Регистрация: Aug 2008
Сообщений: 5
Сегодня часа два проковырялся с такой же проблемой, причём на другой машине всё работало отлично.
Глюк именно при имитации загрузки клипа во флэш. Такое впечатление, что почему-то не отрабатывает в загрузчике removeEventListener.

Решил вот так:
Код AS3:
while(hasEventListener(Event.ENTER_FRAME))
   removeEventListener(Event.ENTER_FRAME, Слушатель);
Может не совсем правильно, но вроде работает...


Последний раз редактировалось udaaff; 22.10.2010 в 15:59.
Старый 22.10.2010, 13:56
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 33  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
О_О!!!
Достаточно просто
Код AS3:
removeEventListener(Event.ENTER_FRAME, Слушатель);

Старый 22.10.2010, 14:59
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 34  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
Тигра, ну если несколько слушателей и мы хотим отписаться от всех, то примерно так и будет
Код AS3:
function _onEnterFrame(e:Event){
	trace("1");
}
function _onEnterFrame2(e:Event){
	trace("2");
}
this.addEventListener(Event.ENTER_FRAME,_onEnterFrame);
this.addEventListener(Event.ENTER_FRAME,_onEnterFrame2);
 
//запустили - в аутпут падают и 1 и 2
//идем далее:
 
trace(hasEventListener(Event.ENTER_FRAME));// true, дописываем дальше:
this.removeEventListener(Event.ENTER_FRAME,_onEnterFrame);
trace(hasEventListener(Event.ENTER_FRAME));// true, пересатили падать 1 в аутпут, дописываем дальше:
this.removeEventListener(Event.ENTER_FRAME,_onEnterFrame2);
trace(hasEventListener(Event.ENTER_FRAME));//false;
для отписки от всех слушателей люди(ленивые, как я) придумали самописные диструкторы
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 22.10.2010, 15:21
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 35  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Ну вообще-то этот скрипт
Код AS3:
while(hasEventListener(Event.ENTER_FRAME))
removeEventListener(Event.ENTER_FRAME, Слушатель);
убъет фп в случае если 2 метода-обработчика.

Старый 22.10.2010, 15:31
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 36  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
ну если слушатель в цикле не будет меняться, то да )
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 22.10.2010, 15:37
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 37  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Ну вообще-то сомнительно перед глобальной отпиской проверять, есть ли такой слушатель.
Код AS3:
			var i:int = 20000;
			var time:Number = getTimer();
			while (i--){
				super.addEventListener(Event.ENTER_FRAME, onEnterFrame);
				if (super.hasEventListener(Event.ENTER_FRAME)) super.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
			}
			trace(getTimer() - time); //~23
Код AS3:
			var i:int = 20000;
			var time:Number = getTimer();
			while (i--){
				super.addEventListener(Event.ENTER_FRAME, onEnterFrame);
				super.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
			}
			trace(getTimer() - time); //~17

Старый 22.10.2010, 15:49
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 38  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Ну вообще-то сомнительно перед глобальной отпиской проверять, есть ли такой слушатель.
вообще нет причин что-либо проверять - removeEventListener удалит слушатель (если он есть) и не выкинет никакой ошибки (если его нет)
__________________
...вселенская грусть

Старый 22.10.2010, 15:55
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 39  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
вообще нет причин что-либо проверять - removeEventListener удалит слушатель (если он есть) и не выкинет никакой ошибки (если его нет)
Единственная возможная причина была - стероид для скорости. Например, если нет слушателей для события, перед которым делается диспатч - то проверка на этот слушатель даст прирост в скорости почти в 15 раз. Из этих соображений можно было бы предположить, что отписка от несуществующего события тоже вещь затратная, однако моя проверка развеяла этот миф )

Старый 22.10.2010, 16:30
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 40  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
стероид для скорости
Откуда? =)
Если проверка выполняется нативно, то как НЕ нативная проверка может быть быстрее?
__________________
...вселенская грусть

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

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

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


 


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


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