![]() |
|
||||||||||
|
|
|
|||||
|
Здравствуйте.
Создаю простенькую презентацию, в основном используя временную шкалу, эффекты движения и кнопки, которые при нажатии переключаются на определеный кадр. Грубо говоря так: Раздел 1 - N кадров, затем стоит команда остановки воспроизведения Раздел 2 - N кадров, затем стоит команда остановки воспроизведения итд. Есть необходимость создать кнопку "Автоматический показ" Которая должна работать примерно так: Показывает Раздел 1 Потом ждет какое-то время, Потом переходит к разделу 2 Ждет какое-то время Переходит к следующему разделу. итд. Подскажите пожалуйста, как это можно реализовать? Мои знания достаточно примитивны ,и очень не хочется дублировать еще раз всю презентацию ,без остановок между кадрами для переключения. Спасибо.
__________________
Большое Вам спасибо! |
|
|||||
|
Не уверен, что это лучший вариант, но попробуйте его. Предполагается, что основная анимация расположена на сцене (_root). Этот код нужно поместить в первом кадре. Вам нужно лишь записать нужные числа в массив stopFrames и повесить на кнопки авто-воспроизведения метод autoplay() и на кнопку остановки метод autoPlayStop().
var stopFrames:Array = [1, 5, 10, 15]; // номера кадров на которых нужно задержаться var currentFrameStop:Number = 0; // индекс текущего кадра (индекс массива созданного выше) var timePaused:Number = 3000;// три секунды var timeout:Number; //переменая для остановки setTimeout stop(); // остановить воспроизведение autoplay(); // запкаем автоПлей //остановить автоПлей function autoPlayStop() { clearTimeout(timeout); delete _root.onEnterFrame; } //автоПлей function autoplay() { //Каждый кадр проверяем _root.onEnterFrame = function() { //если текущий кадр совпадает со значением в массиве if (_currentframe == stopFrames[currentFrameStop]) { // прибавляем индекс currentFrameStop++; // если это было последнее значение в массиве, то переходим в начало массива if (currentFrameStop == stopFrames.length - 1) { currentFrameStop = 0; } //запускаем автоПлей через три секунды timeout=setTimeout(autoplay,timePaused); //удаляем ентерФрейм delete _root.onEnterFrame; } //если текущий кадре НЕ совпадает со значением из массива else { //если это конец временной шкалы, то переходим в начало if(_currentframe == _totalframes) { gotoAndStop(1); } //а если это не конец временной шкалы, то переходим на следующий кадр. else { nextFrame(); } } } Последний раз редактировалось samana; 02.06.2014 в 13:40. |
|
|||||
|
Спасибо, а как лучше сделать, если
Раздел 1 начинается на кадре 25 ,затем идет анимация появления, и затем он останавливается, предположим, на 50 кадре ,командой "СТОП" Раздел 2 начинается на 51 и длится, скажем до 70 итд Кнопки соответственно переключают презентацию на слайды 25, 70 а кнопка автоматического показа, должна срабатывать по нажатию и делать так: 1. Проиграть кадры с 25 по 50 ,остановиться на N секунд 2. Переключиться на кадр 51 ,проиграть до 70 ,задержаться на N секунд итд Исходник во FLASH CS4
__________________
Большое Вам спасибо! |
|
|||||
|
Тогда вы можете сделать немного по-другому не используя код выше. Заведите булеву переменную, которая будет указывать на включённое/выключенное автовоспроизведение. А на тех кадрах (между слайдами), где у вас команда stop, допишите условие, в котором проверяйте - включено ли автровоспроизведение. И если оно включено, то тем же setTimeout переходите на следующий слайд презентации.
код в первом кадре вашего приложения stop(); // установка автоплей в ДА/НЕТ var autoplayOn:Boolean=false; // id для setTimeout, чтобы была возможно остановить его при случае var timeoutId:Number; //для кнопки включить автопоспроизведение play_btn.onPress=function(){ autoplayOn=true; play(); // тут скорее всего надо будет добавить условий //наслучай если презентация начинается с какого-то определённого кадра, //а не с начала ролика } //для кнопки вЫключить автовоспроизвведение stop_btn.onPress=function(){ autoplayOn=false; clearTimeout(timeoutId) } и если на последнем слайде, при включенном автоПлее необходимо будет перейти на первый слайд, тогда код в том кадре немного измените, например код последнего слайда, для перехода на первый Работает ли это всё корректно я точно не знаю, но по идее должно. |
|
|||||
|
Спасибо, большое. Попробую!
__________________
Большое Вам спасибо! |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|