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

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

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

Регистрация: Dec 2010
Сообщений: 4
По умолчанию удаление SetInterval

Здравствуйте, помогите решить такую проблему:

Код AS3:
var interval;
 
ff();
ff();
 
function ff():void
{
	interval = setInterval(fun, 1000);
}
 
function fun():void
{
	clearInterval(interval);
}
Если один раз вызывать функцию ff() то функция fun() вызывается один раз, а если ff() вызвать несколько раз, то оно зацикливается. Как сделать, так, что бы она выполнялась столько раз сколько её вызывали?

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
ff();
ff();
Выполнится два раза.
Код AS3:
ff();
ff();
ff();
ff();
Выполнится четыре раза. Что вы хотите-то? Сделать, чтобы что-то выполнялось раз в секунду? Timer.
__________________
тут я

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

Регистрация: Dec 2010
Сообщений: 4
Проблема в том, что функция ff(); запускается несколько раз по определенному событию. Надо чтоб через секунду запустилась ф-ция fun() столько раз сколько мы ее вызвали, в примере - два. Но если протестить код, то она зацикливается и бесконечно заходит в ф-цию fun(), то есть clearInterval в ф-ции fun() не срабатывает. В этом вопрос. Как удалять интервал каждый раз?

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Ну так у вас же ссылка указывает на идентификатор нового интервала, а старый вы не остановили. Вот он и работает.
Код AS3:
var intervals:Array = [];
 
ff();
ff();
 
function ff():void
{
	intervals.push(setInterval(fun, 1000));
}
 
function fun():void
{
    if (intervals.length)
    {
         clearInterval(intervals.shift());
    {
}

Старый 22.12.2010, 20:34
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
А таймером проще
__________________
тут я

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Я и не возражаю. Ни разу не использовал в as3 setInterval. Но с таймером можно так же накосячить, если пытаться остановить не target, а ссылку.

Старый 22.12.2010, 20:43
gnom4 вне форума Посмотреть профиль Отправить личное сообщение для gnom4 Найти все сообщения от gnom4
  № 7  
Ответить с цитированием
gnom4

Регистрация: Dec 2010
Сообщений: 4
Спасибо, заработало!)

Старый 22.12.2010, 20:44
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 8  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
если пытаться остановить не target, а ссылку
Эм, вот этого не понял. Можно пример?
Код AS3:
private var timer:Timer = new Timer(1000); //ссылка
...
timer.stop(); // останавливаю по ссылке
__________________
тут я

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
setTimeout, если очень хочется)

Старый 23.12.2010, 11:39
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Эм, вот этого не понял. Можно пример?
Один в один как у топикстартера, но с таймером. Обычные ошибки начинающих, как правило, они не следят за ссылками.
Код AS3:
var timer;
 
ff();
ff();
 
function ff():void
{
	timer = new Timer(1000); //создается таймер
}
 
function fun():void
{
	timer.stop(); //вот здесь будет косяк
}

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

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

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


 


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


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