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

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

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

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
По умолчанию Проблема с очисткой setInterval

Большая просьба помочь,потому что я уже не могу найти этой проблеме объяснение.
Суть вот в чем:
Есть swf в которой используется для создания анимации setInterval(смена картинок,печатание текста,ну и всякого разного),эта swf грузится MovieClipLoader в главную swf.
и тут самое интересное.Нажимаем кнопочку,запускающюю дочернюю swf - все нормально.
Потом жмем другую кнопочку,запускающюю другую дочернюю swf,а потом опять 1 кнопочку,которая снова грузит swf с setInterval и пожалуйста,SetInterval запускается в 2 раза быстрее,и естесствено вся работа летит к чертям,если ещё разок запустить эту swf,то setInterval вызывается в 4 раза быстрее и т.д.
Код:
var SLAID = 5000
var Slaid = null;
////
Slaid = setInterval(slaid,SLAID)
/////
function slaid() {
	page_mc.watch("brightness",zasvet,page_mc)
	page_mc.vartween = new Tween(page_mc, "_x", Regular.easeOut,page_mc._x,page_mc._x-300, 1.2, true);
	page_mc.vartween.onMotionFinished = function(){
	page_mc.vartween1 = new Tween(page_mc,"brightness",Regular.easeOut,100,0,1.2,true)
	}
	if (page_mc._x+page_mc._width<300) {
		page_mc.vartween.stop();
		page_mc.vartween.continueTo(300,0.8);
	}
}
,тут он внутри дочерней флешки не обгуляется,а вот обнуляется и все равно лажа:
Код:
var Start = 3000;
var perebor = null;
////////////
function perebork() {
clearInterval(perebor);
	pereborka.vartween = new Tween(pereborka, "_xscale", Elastic.easeOut, 0, 100, 1.2, true);
	pereborka._visible = true;
	diman_txt.vartween2 = new Tween(diman_txt, "_width", Elastic.easeOut, 600, 300, 1.2, true);
	mask_mc.vartween3 = new Tween(mask_mc, "_width", Elastic.easeOut, 600, 300, 1.2, true);
}
perebor = setInterval(perebork, Start);
если так то все равно:
Код:
var Start = 3000;
////////////
function perebork() {
clearInterval(perebor);
	pereborka.vartween = new Tween(pereborka, "_xscale", Elastic.easeOut, 0, 100, 1.2, true);
	pereborka._visible = true;
	diman_txt.vartween2 = new Tween(diman_txt, "_width", Elastic.easeOut, 600, 300, 1.2, true);
	mask_mc.vartween3 = new Tween(mask_mc, "_width", Elastic.easeOut, 600, 300, 1.2, true);
}
perebor = setInterval(perebork, Start);

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
А так?
Код:
function perebork() {
clearInterval(perebor);
	pereborka.vartween = new Tween(pereborka, "_xscale", Elastic.easeOut, 0, 100, 1.2, true);
	pereborka._visible = true;
	diman_txt.vartween2 = new Tween(diman_txt, "_width", Elastic.easeOut, 600, 300, 1.2, true);
	mask_mc.vartween3 = new Tween(mask_mc, "_width", Elastic.easeOut, 600, 300, 1.2, true);
perebor = setInterval(perebork, Start);
}

Старый 23.09.2008, 18:20
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 3  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Хм,а так ведь вообще функция не вызывается

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Ну значит и clearInterval(perebor); у вас не вызывается.

Старый 23.09.2008, 19:24
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 5  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Obi Вы,в вашем примере засовываете вызов интервала в тело функции,то как она вызовется,я конечно могу написать perebork(),но тогда вообще какойто дергунчик начинается

Хорошо,тогда так.Вот пример во флешке под названием index жмем на черный прямоугольник,грузиться флешка txt,она проигралась,жмем ещё раз на черный прямоугольник,txt.swf проигрывается быстрее,можно ещё разочек нажать, - ещё быстрее

так,оказывается,эта проблема,не только в моих swf,я пробовал загружать и чужие swf,содержащие setInterval,(пример)та же история,при повторном просмотре,частота увеличивается.Что это за баг такой?ъ



так и что же мне делать?
Я уже и так за этот вопрос пострадал,причем дважды.
Что-то этот setInterval не взлюбил меня
Вложения
Тип файла: zip Desktop.zip (57.8 Кб, 32 просмотров)


Последний раз редактировалось scarbo; 24.09.2008 в 20:27. Причина: боязнь iNilsa
Старый 23.09.2008, 22:39
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Пользователь scarbo, получает второй плюс за мультипостинг.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 24.09.2008, 18:08
джонатан вне форума Посмотреть профиль Отправить личное сообщение для джонатан Найти все сообщения от джонатан
  № 7  
Ответить с цитированием
джонатан
 
Аватар для джонатан

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
Ё мое, что тут непонятного? Каждым жмяканьем кнопки ты создаешь еще один интервал, неудалив старый. Интервал то это ведь Number, так что и clearInterval удалит только последний созданный, а предыдущий останется работать. Т.е. если ты сделаешь:
Код:
var int1 = setInterval...... 
trace(int1) выведет 1
var int1 = setInterval......
trace(int1) ужу выведет выведет 2, и т.д...
__________________
Убейте меня!

Старый 24.09.2008, 18:19
darksranger вне форума Посмотреть профиль Отправить личное сообщение для darksranger Посетить домашнюю страницу darksranger Найти все сообщения от darksranger
  № 8  
Ответить с цитированием
darksranger
 
Аватар для darksranger

блогер
Регистрация: Jun 2007
Адрес: in sankt - peterburg
Сообщений: 787
Записей в блоге: 2
Отправить сообщение для darksranger с помощью ICQ
Код:
function perebork() {
clearInterval(perebor);
	pereborka.vartween = new Tween(pereborka, "_xscale", Elastic.easeOut, 0, 100, 1.2, true);
	pereborka._visible = true;
	diman_txt.vartween2 = new Tween(diman_txt, "_width", Elastic.easeOut, 600, 300, 1.2, true);
	mask_mc.vartween3 = new Tween(mask_mc, "_width", Elastic.easeOut, 600, 300, 1.2, true);
perebor = setInterval(perebork, Start);
}
джонатан
ппц вы читать умеете ?

у человека функция выглядет так:
Код:
clearInterval(perebor);
perebor = setInterval(perebork, Start);
clearInterval(perebor);
perebor = setInterval(perebork, Start);
тоесть перед созданием, удаляется предидущий интервал
__________________
на каком языке вы пишите?
а на каком нужно?

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

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

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


 


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


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