PDA

Просмотр полной версии : clearInterval почемуто не останавливает при событии onStatus


van4es
02.04.2009, 21:08
проблема следующая:

есть интервал для вызова функции

function showProgress()
{
resizeScale = setInterval(updateScale, 50);
}
showProgress();


который убивается при нажатии на кнопку

myButton.onRelease = function playPause()
{
clearInterval( resizeScale );

}


а вот на событие onStatus почуму то не срабатывает

netStream.onStatus = function(infoObject:Object) {
switch (infoObject.code) {
case'NetStream.Play.Stop':

clearInterval( resizeScale );
break;
}
}


в чём проблемма?

cleptoman
02.04.2009, 21:19
проблемма в том , что в АС2 в обработчиках все происходит относительно объека испустившего его.

т.е. тут
netStream.onStatus = function(infoObject:Object) {
все происходит относительно объекта netStream
соответственно в нем нет свойства resizeScale

mx.utils.Delegate вам в помощь

Stargazer
02.04.2009, 21:48
проблемма в том , что в АС2 в обработчиках все происходит относительно объека испустившего его.

Это в том, что касается this. А вот что касается области видимости переменных - то по моему опыту у меня сложилось чувство, что всё зависит от того, где было выполнено объявление переменной и где выполнено присваивание (в данном случае) обработчика onStatus.

van4es, а что выводит trace(resizeScale), если его поставить внутрь onStatus?

van4es
02.04.2009, 21:48
а можно как то помочь? а то я думаю долго буду разбираться с mx.utils.Delegate

van4es
02.04.2009, 21:56
trace(resizeScale)

выводит 1

Stargazer
02.04.2009, 22:23
Хм... В таком случае делегаты вам не нужны.

Попробуйте трейсить id, в те моменты, когда вы получаете его от setInterval и в те моменты, когда вы интервалы удаляете. Убедитесь, что у вас не возникает лишних интервалов и что вы удаляете именно id активного интервала, а не уже удалённого или ещё несуществующего.

cleptoman
03.04.2009, 10:16
Stargazer, а вы пробовали так в классах писать? без Delegate

van4es
03.04.2009, 13:24
хм.....чесно говоря, я запарился уже его трейсить и убивать. уже такие извращения делал, что внутри onStatus вызавал функцию, которая его(интервал) убивает.

При нажатии на кнопку, эта функция его убивает, а при вызове onStatus - нет.
Решил проблему совершенно другим путём....а вообще хотел бы чтобы гуру флэша разобрались с этим моментом.