PDA

Просмотр полной версии : Организация паузы


Alexander Kovtunov
04.10.2002, 17:00
При создании презентации необходимы паузы.
При организации паузы через цикл с getTime в общем-то получается
Но при этом в течении паузы невозможно совершить какие-либо другие действия.
Как сделать выход из цикла?

beshan
04.10.2002, 19:28
ты наверное цикл с паузой поместил на основной тэмплэйт? если вынести отдельным мувиком не должно тормозить

лучше всего юзать setInterval (); // в МХ

тоесть, стопиш мувик, в интервале указываеш время через которое нужно запустить дальнейшие действия

Alyosha
06.10.2002, 04:49
Ваша проблема в непонимании сути/философии флэш.
ActionScript не выполняется параллельно фильму в отдельном потоке, а идет в кадрах, и пока выполняется код (а он выполняется до вывода изображения текущего кадра) Флэш "виснет" намертво. Попробуйте увеличить Ваш цикл и вы увидите, что флэш начал ругаться: "ActionScript слишком долго исполняет свой код. Обломить его?"

Предложение:
1. Делайте пустые кадры (Insert frame). Т.е. не изменяйте содержимое слоя на протяжении 100-300 кадров. Если у Вас много слоев, то ничего страшного, продлите их всех. Размер фильма увеличится только на кол-во "стоячих" кадров * 2 байта. Большое кол-во слоев не прибавляет размера.
2. Делайте "stop()" и продолжайте командой "play()" спустя некоторое время. Для этого потребуется создать пустой мувик с кодом:
onClipEvent(load){
wait=100
}
onClipEvent(enterFrame){
if (!wait--){
_parent.play()
}
}

2-й вариант стоит использовать при особо больших задержках (более 200 кадров)

Alexander Kovtunov
08.10.2002, 21:54
Alyosha,
Второй вариант поприятнее ибо предполагает более гибкие изменения паузы.

А как быть ежели нужно совместить самостоятельное "кручение" флэш-презентации и интерактивность?
Т.е. можно "прокручивать" нажимая мышой на кнопки, но если возникает пауза, то шоб ролик начинал сам "крутиться"
Как отловить ЛЮБЫЕ действия мышой для прерывания паузы?
Проверять в цикле координаты?

mort
09.10.2002, 11:52
Как я понял, презентация представляет собой фильм из n-ного количества подряд идущих кадров?
В таком случае намного проще будет поместить всю презентацию в отдельный клип и управлять его поведением извне.

Первая кнопка: myClip.stop();
Вторая кнопка: myClip.play();
Где myClip - это клип с мувиком.

Реализация возможности "проигрывания назад" будет не намного сложнее.
В этом случае нужно повешать всю процедуру проигрывания клипа на интервалы:

//Второй вариант

_root.vStep = 1; // управляющая переменная. ( Если "-1" - играем назад, если "0" - пауза, если "1" - играем вперед. )

function myClipControl(){
_root.myClip.gotoAndStop( _currentframe+_root.vStep );
}
setInterval( myClipControl, 40 ); // 25 кадров в секунду.

В этом случае для управления клипом нужно будет изменять переменную _root.vStep.

Первая кнопка: _root.vStep = -1; // назад
Вторая кнопка: _root.vStep = 0; // пауза
Третья кнопка: _root.vStep = 1; // вперед


Клип будет сам крутиться как ему скажешь, не забудь поставить контроль за кадрами.
Вся остальная интерактивность будет жить собственной жизнью.

во-о-о-т......