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

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

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Question Странная работа setInterval

Привет. Великие Гуру флэш, помогите разобраться с проблемой: написал функцию - на сцену с некоторой периодичностью должен вызываться клип из библиотеки. По окончании его проигрывания он должен удалиться. Эту функцию вызываю периодически с помощью setInterval. Так вот, все нормально, клип появляется и исчезает как положено, но после нескольких таких таких вызовов пропадает. Почему???
Код:
//Задаю время периодичности появления клипа
var t_nach:Date = new Date ();
var t_nach_sec:Number = t_nach.getSeconds ();
var b:Number = t_nach_sec;
var t_show:Number = 3;
function pokaz () {
	var t_tek:Date = new Date ();
	var t_tek_sec:Number = t_tek.getSeconds ();
           //Проверяю - если настало время показа клипа - аттачу его
	if (t_tek_sec >= b + t_show) {
		_root.attachMovie ("mov", "mov", this.getNextHighestDepth (), {_x:200, _y:200});
                       //Когда клип доигрывает до конца - удаляю его
		mov.onEnterFrame = function () {
			if (mov._currentframe == mov._totalframes) {
				mov.removeMovieClip ();
				delete this.onEnterFrame;
                                             //Увеличиваю счетчик
				b += t_show;
			}
		};
	}
}
//Интервал
a = setInterval (pokaz, 1000);

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

Регистрация: Nov 2007
Сообщений: 24
может дело в
_root.attachMovie ("mov", "mov", this.getNextHighestDepth (), {_x:200, _y:200});
ты всегда одно и тоже имя присваиваешь клипу и потом работаешь с ним. может конфликт бывает? клип успевает исчезнуть до того как другой появится?

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

Регистрация: May 2004
Сообщений: 136
Отправить сообщение для B0Bka с помощью ICQ
у меня все работает
появляется, сразу удаляется и через каждую секунду повторяется

можешь перед строкой создания
вставить еще одно удаление:
Код:
mov.removeMovieClip();
_root.attachMovie ("mov", "mov", this.getNextHighestDepth(), {_x:200, _y:200});
но, мне кажется, лучше вставлять всегда на известный слой
и как сказал qwerter _root тоже лучше не использовать


Последний раз редактировалось B0Bka; 26.11.2007 в 00:37.
Старый 26.11.2007, 00:28
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 4  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Но странно же - почему некоторое время работает нормально, а через 5 - 10 итераций (когда как) пропадает??? Т.е. запускается, клип появляется и исчезает как надо, но после нескольких таких повторений (всегда по-разному) клип совсем пропадает.


Последний раз редактировалось Волгоградец; 26.11.2007 в 11:44.
Старый 26.11.2007, 00:32
B0Bka вне форума Посмотреть профиль Отправить личное сообщение для B0Bka Найти все сообщения от B0Bka
  № 5  
Ответить с цитированием
B0Bka
 
Аватар для B0Bka

Регистрация: May 2004
Сообщений: 136
Отправить сообщение для B0Bka с помощью ICQ
мне кажется у тебя мувик mov имеет какую-то особенность, там анимация?
наверно это условие не проходит:
Код:
mov._currentframe == mov._totalframes
попробуй оттрейсить

для теста просто создай простой клип с одним кадром вместо mov что будет


Последний раз редактировалось B0Bka; 26.11.2007 в 00:37.
Старый 26.11.2007, 00:34
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
B0Bka, для оформления своего кода, надо использовать теги [code][/code], поэтому надо исправить ваши примеры выше.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Nov 2007
Сообщений: 24
у меня работает вроде бы

Старый 26.11.2007, 11:55
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 8  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Там проходят все условия. Он нормально работает, но всегда разное количество раз (а должен постоянно). Можно по-другому конечно написать код, но просто интересно и хочется разобраться в чем здесь ошибка...

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

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

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


 


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


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