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

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

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

Регистрация: Dec 2007
Адрес: Пермь - Лысьва
Сообщений: 53
По умолчанию Проблема: При многократных загрузках ролика таймер в нем сбивается

Такая ситуация: Главная флэшка загружает флэшку в которой есть таймер(заданный setInterval(..., 1000)). Когда первый раз загружаешь эту флэшку, таймер идет как надо. Но при повторых загрузках таймер с каждым разом идет все быстрее и быстрее.
Не могу понять в чем проблема.

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

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
привет,я тож с этим бился,месяца 2-3 назад.Проблему так мы тут и не решили.
Попробуй setTimeout,ну или тогда onEnterFrame.
__________________
Я просто добрый шутник.

Старый 30.11.2008, 05:49
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Допустим setInterval каждые 5 секунд вызывает некую функцию. Если загрузить 5 клипов последовательно через 1 секунду. То 5 setInterval будут суммарно вызывать эту функцию каждую секунду.
Для того чтобы это избежать, надо перед запуском setInterval проверять значение флага (флаг, это такая переменная, которая сигнализирует каком то состоянии). Допустим если он равен true, то запускать (и менять на false), false - нет.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 30.11.2008, 20:09
StudentPSTU вне форума Посмотреть профиль Отправить личное сообщение для StudentPSTU Найти все сообщения от StudentPSTU
  № 4  
Ответить с цитированием
StudentPSTU

Регистрация: Dec 2007
Адрес: Пермь - Лысьва
Сообщений: 53
iNils, не совсем Вас понял. Решил не париться и написал черезе enterFrame.

Старый 30.11.2008, 20:21
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

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

Старый 19.12.2008, 19:06
StudentPSTU вне форума Посмотреть профиль Отправить личное сообщение для StudentPSTU Найти все сообщения от StudentPSTU
  № 6  
Ответить с цитированием
StudentPSTU

Регистрация: Dec 2007
Адрес: Пермь - Лысьва
Сообщений: 53
Ясно. Значит можно просто при выгрузке клипа удалить setInterval.

Старый 20.12.2008, 10:24
alecsisk вне форума Посмотреть профиль Отправить личное сообщение для alecsisk Найти все сообщения от alecsisk
  № 7  
Ответить с цитированием
alecsisk

Регистрация: Feb 2008
Адрес: N.Novgorod
Сообщений: 80
Отправить сообщение для alecsisk с помощью ICQ
Код AS1/AS2:
var flag:Boolean = false;
var my_interval:Number;
 
set_interval = function(value:Boolean, func:Function, timer:Number):Void {
	if (value == true && flag == false) {
		my_interval = setInterval(func, timer);
		flag = true;
	}
	if (value == false) {
		clearInterval(my_interval);
		flag = false;
	}
}
 
 
my_function = function():Void {
	trace("my_function");
}
 
set_interval(true, my_function, 1000);
set_interval(true, my_function, 1000);
set_interval(true, my_function, 1000);
возможно поможет


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

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

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


 


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


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