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

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

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

Регистрация: Feb 2008
Сообщений: 890
По умолчанию Что такое callback в AS3?

Дайте доступное определение того, что есть callback-и

И сразу следующий момент:
на этом форуме некоторые товарищи имеют мнение, что если кто-то не использует событийную модель, то он просто не понимает что она из себя представляет и как работает

но есть опять же мнения, что в требовательных к производительности приложениях (вроде активных игр) в споре callback Vs. events использование ивентов недопустимо и сродни рытья себе могилы

про какие callback-и тут опять же речь?
__________________
скриптограф

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
> в споре callback Vs. events использование ивентов недопустимо

Если события вызывают ТАКИЕ проблемы с производительностью, что допустимо использование слова "недопустимо", то имеет смысл пересмотреть целесообразность использования флеша.

Немного спасает от тормозов при ОГРОМНОМ количестве событий переопределение метода dispatchEvent и внесение в него проверки на существование слушателя этого события, чтобы лишний раз не диспатчились.

А callBack — это функция, которая будет вызываться при определенном стечении обстоятельств, например, вместо
Код AS3:
function rebuild():void {
   ...
   dispatchEvent('buildComplete');
}
можно добавить callback:

Код AS3:
public function setBuildCompleteCallback(callback:Function):void {
   _buildCompleteCallback = callback;
}
 
function rebuild():void {
   ...
   if(_buildCompleteCallback) {
      _buildCompleteCallback.call();
   }
}
И работать это будет немного быстрее, по идее.
__________________
#flasher@irc.trg.ru:6667


Последний раз редактировалось Obi; 14.05.2010 в 15:02.
Старый 14.05.2010, 15:04
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 3  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
ну т.е. суть callback-a в том, что не отсылается событие, а вызывается какая-то функция напрямую или через прокси-функцию (я так называю то, что у вас _buildCompleteCallback )?
__________________
скриптограф

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
верно.
__________________
#flasher@irc.trg.ru:6667

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

Регистрация: Feb 2008
Сообщений: 890
Ну вот, кстати, Михаил Антипин, который Nox Noctis, в своем докладе на вчерашнем флешгамме сказал что-то типа (если я правильно понял):
- понятно, что событийные объекты маленькие и незначительные, и сама по себе их генерация не особо затратная процедура, но все зло (читай: возможные тормоза) идет от GC, которому в какие-то моменты все эти объекты надо собирать и выкидывать из памяти.

В принципе, я придерживаюсь того же мнения с момента начала изучения AS3, но, т.к. имею мало опыта, тестировать обе схемы (коллбэки и ивенты) на каком-то одном затратном приложении мне не доводилось, поэтому я не могу подтвердить из своего опыта, что проблема GC действительно стоит так остро.
__________________
скриптограф

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

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

ЗЫ про колбеки
На мой взгляд события нужны там и только там, где лень писать дофига колбеков или нет уверенности - как именно этот колбек будет назначаться.
__________________
...вселенская грусть

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

Регистрация: Feb 2008
Сообщений: 890
Хотя я вот сейчас подумал такую вещь:
пользовательских событий в какой-нибудь активной игре на самом деле не больше 5-10% от общего числа (остальные - это системные события, типа мышка движется, роллОверы всякие и т.д.)
GC ведь все равно приходится вычищать системные событийные объекты (а от них никуда не денешься) - так что нагрузка от пользовательских событий на GC в этом смысле минимальна. Т.е., как мне кажется, проблема GC - это надуманная проблема (в смысле, что проблема GC, возможно есть, но это связано в основном с системными событиями, а не с пользовательскими - если рассматривать проблему GC только в срезе событийных объектов), а основная нагрузка и как следствие тормоза может идти не от GC, а от количества слушателей, висящих в памяти.
__________________
скриптограф


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

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
опять этот бред про событий и ГЦ. интересно откуда ноги растут? локальные переменные удаляются сразу. никакой ГЦ они не запускают. если событие нигде не повисло, то оно сразу же удалится.

Старый 14.05.2010, 16:20
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 9  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
опять этот бред про событий и ГЦ. интересно откуда ноги растут? локальные переменные удаляются сразу. никакой ГЦ они не запускают. если событие нигде не повисло, то оно сразу же удалится.
О каких локальных переменных вы говорите? О примитивах - согласен, о ссылках на объекты - согласен, а вот сами объекты, как я понимаю, какими бы они локальными не были, сразу не удаляются.
__________________
скриптограф

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

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
кстати ... мы когда-то писали ММО, типа того, что пишет Нокс. так вот у нас всё на событиях было. никаких проблем с этим не было. а события составляли такую малость по сравнению к остальным узким местами, что мы вообще не обращали на них внимания. я даже не знаю, что нужно сделать, что бы события начали тормозить. тормоза с GC возникали, только при массовой выгрузке библиотек, например при телепорте в другое место.

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

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

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


 


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


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