Показать сообщение отдельно
Старый 14.07.2010, 09:01
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 2  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Что явно нехорошо:
- вложенная функция "chatvar.onLoad = function(success){...}", она создается вновь (с выделением нового куска памяти, естественно) при каждом вызове logsLoaded();
- кусок кода
Код:
delete chatvar;
clearInterval(_global.logs_interval);
delete _global.logs_interval;
_global.logs_interval = setInterval(logsLoaded, 1200);
_global.ClearLogsInt =Number (_global.ClearLogsInt+1) ;
_root.chat_txt = _global.ClearLogsInt;
выполняется ДО загрузки лоадварса - так и задумано, т.е. вы как бы "удаляете" chatvar, а потом в него падают пришедшие данные?
- зачем чистить интервал и тут же назначать его вновь, удалять переменную и тут же создавать вновь? это не паранойя, а маразм;
- сомневаюсь, что ваши delete работают в любом случае, ибо вы сохраняете ссылки на объект в глобал-переменную прежде чем удалить.
И что, это нормально работает везде, кроме ФФ?
Потом, что вы здесь называете циклом? Вызв по интервалу? Так и сделайте нормальный 1 (один единственный) интервал, без вложенных функций, без ненужных ссылок в глобал и прочей фигни.
Код AS1/AS2:
function onLoadHandler(success){
	if(success){
		...
	}
	else{
		...
	}
}
var lv:LoadVars = new LoadVars();
lv.onLoad = onLoadHandler;
function loggsLoaded(){
	lv.load(...);
}
var intv = setInterval(loggsLoaded,1200);