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

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

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

Регистрация: Aug 2006
Адрес: Russian Federation. Perm.
Сообщений: 41
Отправить сообщение для Nick Rogalev с помощью ICQ
По умолчанию Как автоматизировать показ ролика

Здравствуйте.
Создаю простенькую презентацию, в основном используя временную шкалу, эффекты движения и кнопки, которые при нажатии переключаются на определеный кадр.

Грубо говоря так:
Раздел 1 - N кадров, затем стоит команда остановки воспроизведения
Раздел 2 - N кадров, затем стоит команда остановки воспроизведения
итд.

Есть необходимость создать кнопку "Автоматический показ"
Которая должна работать примерно так:
Показывает Раздел 1
Потом ждет какое-то время,
Потом переходит к разделу 2
Ждет какое-то время
Переходит к следующему разделу.
итд.

Подскажите пожалуйста, как это можно реализовать?
Мои знания достаточно примитивны ,и очень не хочется дублировать еще раз всю презентацию ,без остановок между кадрами для переключения.

Спасибо.
__________________
Большое Вам спасибо!

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Не уверен, что это лучший вариант, но попробуйте его. Предполагается, что основная анимация расположена на сцене (_root). Этот код нужно поместить в первом кадре. Вам нужно лишь записать нужные числа в массив stopFrames и повесить на кнопки авто-воспроизведения метод autoplay() и на кнопку остановки метод autoPlayStop().

Код AS1/AS2:
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.
Старый 02.06.2014, 06:47
Nick Rogalev вне форума Посмотреть профиль Отправить личное сообщение для Nick Rogalev Найти все сообщения от Nick Rogalev
  № 3  
Ответить с цитированием
Nick Rogalev
 
Аватар для Nick Rogalev

Регистрация: Aug 2006
Адрес: Russian Federation. Perm.
Сообщений: 41
Отправить сообщение для Nick Rogalev с помощью ICQ
Спасибо, а как лучше сделать, если
Раздел 1 начинается на кадре 25 ,затем идет анимация появления, и затем он останавливается, предположим, на 50 кадре ,командой "СТОП"
Раздел 2 начинается на 51 и длится, скажем до 70
итд

Кнопки соответственно переключают презентацию на слайды 25, 70

а кнопка автоматического показа, должна срабатывать по нажатию и делать так:
1. Проиграть кадры с 25 по 50 ,остановиться на N секунд
2. Переключиться на кадр 51 ,проиграть до 70 ,задержаться на N секунд
итд

Исходник во FLASH CS4
__________________
Большое Вам спасибо!

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Тогда вы можете сделать немного по-другому не используя код выше. Заведите булеву переменную, которая будет указывать на включённое/выключенное автовоспроизведение. А на тех кадрах (между слайдами), где у вас команда stop, допишите условие, в котором проверяйте - включено ли автровоспроизведение. И если оно включено, то тем же setTimeout переходите на следующий слайд презентации.
код в первом кадре вашего приложения
Код AS1/AS2:
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)
}
код в кадрах, где у вас команда stop, между слайдами
Код AS1/AS2:
stop();
if(autoplayOn)
{
	timeoutId=setTimeout(function(){play()}, 3000);
}
и если на последнем слайде, при включенном автоПлее необходимо будет перейти на первый слайд, тогда код в том кадре немного измените, например
код последнего слайда, для перехода на первый
Код AS1/AS2:
stop();
if(autoplayOn)
{
	timeoutId=setTimeout(function(){gotoAndStop(номер первого слайда)}, 3000);
}
Работает ли это всё корректно я точно не знаю, но по идее должно.

Старый 02.06.2014, 14:59
Nick Rogalev вне форума Посмотреть профиль Отправить личное сообщение для Nick Rogalev Найти все сообщения от Nick Rogalev
  № 5  
Ответить с цитированием
Nick Rogalev
 
Аватар для Nick Rogalev

Регистрация: Aug 2006
Адрес: Russian Federation. Perm.
Сообщений: 41
Отправить сообщение для Nick Rogalev с помощью ICQ
Спасибо, большое. Попробую!
__________________
Большое Вам спасибо!

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

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

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


 


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


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