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

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

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

Регистрация: Jan 2004
Адрес: Абакан, Республика Хакасия
Сообщений: 10
Отправить сообщение для Александр-HIMик с помощью ICQ Отправить сообщение для Александр-HIMик с помощью AIM Отправить сообщение для Александр-HIMик с помощью Yahoo
Thumbs down Использование setInterval и clearInterval при создании flash-презентации

У меня следующая конструкция:
1 - Меню. Основа. В нём 3 кадра: обычное меню, с первым развернутым пунктом меню, со вторым развёрнутым пунктом. В него по дефолту подгружаются внешние файлы, а-ля
Код:
loadMovieNum("dyn_main.swf",1);
и активизируются:
Код:
on(press){
	_level1.gotoAndStop("divan");
	}
2 - Внешний файл. Содержит описания товаров разбитые на несколько кадров. Например (3 кадра) диван: описание, чертежи, фото. Каждый товар показывается в виде презентации - идёт серия из кадров, в конце описания товара идёт остановка. Пользователь должен имееть право перейти на любой кадр в любой момент времени, даже когда кадры сменяют друг друга.
Для этого существует менюшка (внутри этого же внешнего файла), с помощью которой данная задача реализуется, а-ля
Код:
on(press){
	gotoAndStop("divan_info");}
3 - Запускаю презентацию следующим образом:
1) В 1м кадре ставится
Код:
function goToNext(){
	    gotoAndStop(nextFrame());
	}
	var intervalID:Number = setInterval(goToNext, 2000);
2) в последнем (в данном случае 3-ем) кадре ставится
Код:
clearInterval(intervalID);
Для того чтобы пользователь мог просматривать статичные кадры, я ввожу переменную, перед просмотром презентации
Код:
var pres:Boolean = true;
а потом ставлю условие
Код:
if (b == true) {
	var intervalID:Number = setInterval(goToNext, 2000);
	}
в конце просмотра я ставлю
Код:
pres = false;
таким образом убирая запуск презентации, в случае если пользователь вернётся на её первый кадр.
Надеюсь хоть кто-нибудь понял что я имею в виду.

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

Получается, что только досмотрев презентацию пользователь сможет "безболезненно" и3учать детали товара, ибо только тогда срабатывает clearInterval. Что посоветуете?
__________________
<<.. я примерно представляю, что мне надо. Только вот пока не знаю от кого..>>

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

Регистрация: Mar 2001
Сообщений: 1,147
сударь, Ваш синтаксис - упадочный стиль, эпоха Керенского! используйте setInterval для многократного запуска функции. одноразовый аналог - setTimeout (параметры те же). соответственно у него нет ID и нет необходимости его очищать.
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Double
одноразовый аналог - setTimeout (параметры те же). соответственно у него нет ID и нет необходимости его очищать.
Это не верно. У setTimeout есть также id и его также можно очистить, но только до момента срабатывания, дальше он сам очищается. Используется или clearInterval(id) или clearTimeout(id), разницы нет.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 17.06.2007, 10:34
Александр-HIMик вне форума Посмотреть профиль Отправить личное сообщение для Александр-HIMик Посетить домашнюю страницу Александр-HIMик Найти все сообщения от Александр-HIMик
  № 4  
Ответить с цитированием
Александр-HIMик
 
Аватар для Александр-HIMик

Регистрация: Jan 2004
Адрес: Абакан, Республика Хакасия
Сообщений: 10
Отправить сообщение для Александр-HIMик с помощью ICQ Отправить сообщение для Александр-HIMик с помощью AIM Отправить сообщение для Александр-HIMик с помощью Yahoo
Пока воссоздавал пример, понял что имею два ключевых момента:
1) когда пользователь просматривает полностью презентацию по товару, возможность дальшейшей презентации других товаров отключается ибо по окончании какой-либо презентации
Код:
pres = false;
. Можно и не вводить данную переменную, просто ставить на кнопки перехода по кадрам clearInterval. Для встроенную в загружаемый ролик навигацию это работает (см. файл), а вот в главной навигации -- фиг!
2) если пользователь не досмотрев презентацию переключается на другой товар, то интервал не вычищается и продолжает работать.

http://www.dark-abakan.nm.ru/sample.zip

К вопросу о стиле. В данном случае это что-то меняет?
__________________
<<.. я примерно представляю, что мне надо. Только вот пока не знаю от кого..>>

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

Регистрация: Mar 2001
Сообщений: 1,147
в данном случае? возможно. интервал не очищается из-за проблем с относительной адресацией. конструкция _level1 - это очень круто, но не совсем понятно ГДЕ. та же история и с ID интервала. я уверен.

тут Вам никто не поможет. в таком синтаксисе разобраться тяжело. когда этот код присутствует фрагментарно сказать практически вообще ничего нельзя. по вашим словам в первом кадре стоит gotoAndStop(nextFrame), а далее сразу идёт речь о третьем кадре. про второй нам самим нафантазировать?..
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.

Старый 18.06.2007, 06:20
Александр-HIMик вне форума Посмотреть профиль Отправить личное сообщение для Александр-HIMик Посетить домашнюю страницу Александр-HIMик Найти все сообщения от Александр-HIMик
  № 6  
Ответить с цитированием
Александр-HIMик
 
Аватар для Александр-HIMик

Регистрация: Jan 2004
Адрес: Абакан, Республика Хакасия
Сообщений: 10
Отправить сообщение для Александр-HIMик с помощью ICQ Отправить сообщение для Александр-HIMик с помощью AIM Отправить сообщение для Александр-HIMик с помощью Yahoo
Сложно разобраться в синтаксисе -- пожайлуйста, вот и исходники, так сказать.
В таком случае как-то глобально можно вычистить интервалы или нет?
__________________
<<.. я примерно представляю, что мне надо. Только вот пока не знаю от кого..>>

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

Регистрация: Mar 2001
Сообщений: 1,147
спасибо. подозрения были, но точно не знал. проверить как-то не возникало необходимости.
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.

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

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

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


 


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


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