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

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

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

Регистрация: Sep 2002
Сообщений: 202
По умолчанию прокручивание ролика в обоих временных направлениях

Приветствую
У меня стоит следующая задача:

* есть 20 кадров ролика (вращение 3D объекта - сделано через 20 jpeg кадров)
* есть 2 кнопки "назад" и "вперед"

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

на некоторых кадрах ролик должен останавливаться чтобы вывести некоторую дополнительную информацию

Я сделал следующим образом
1) добавил слой команд и в каждом кадре сделал
Код:
stop();
2) добавил второй слой команд, общий для всех 20 кадров и
* вписал туда глобальную переменную
Код:
var g_bIsForwardDir:Boolean = true
* код для перемотки ролика вперед или назад через определенные промежутки времени черех
Код:
nextframe()
и
Код:
prevframe()
3) на кнопки навесил код который при нажатии изменяет переменную g_bIsForwardDir в ту или иную сторону

Все работает, но мне кажется что это излишне коряво и можно обойтись более элегантными и правильными способами,
Например мне очень не нравится 20 команд stop();

подскажите как правильно сделать

Старый 27.11.2007, 09:30
Skriv вне форума Посмотреть профиль Отправить личное сообщение для Skriv Найти все сообщения от Skriv
  № 2  
Ответить с цитированием
Skriv
[+1 06.04.11]

Регистрация: Jul 2007
Сообщений: 110
Думаю setInterval();

Старый 27.11.2007, 09:44
Zhihar вне форума Посмотреть профиль Отправить личное сообщение для Zhihar Найти все сообщения от Zhihar
  № 3  
Ответить с цитированием
Zhihar

Регистрация: Sep 2002
Сообщений: 202
а что setInterval() ?

у меня вот такой код получился
Код:
var g_bIsForwardDirection:Boolean = true;

// временная задержка между кадрами
var g_nFramesDelay:Number = 125;

var g_nOldTimer:Number = getTimer();

// массив кадров на которых ролик должен останавливаться
var g_pInfoFrames:Array = Array(92, 97, 102, 107);

// позиция ключевового кадра
var g_nInfoFrameID:Number = 0;

this.onEnterFrame = function()
{
	if (g_bIsForwardDirection == true)
	{
		var nLastFrame:Number;
		
		if (g_nInfoFrameID < g_pInfoFrames.length)
			nLastFrame = g_pInfoFrames[g_nInfoFrameID];
		else
			nLastFrame = 112;
		
		if (_currentframe < nLastFrame)
		{
			if (getTimer() - g_nOldTimer >= g_nFramesDelay)
			{
				g_nOldTimer = getTimer();
				
				if (_currentframe < 111)
					nextFrame();
				else
				{
					g_nInfoFrameID = 0;
					gotoAndStop(92);
				}
			}
		}
	}
	else
	{
		if (_currentframe > g_pInfoFrames[g_nInfoFrameID])
		{
			if (getTimer() - g_nOldTimer >= g_nFramesDelay)
			{
				g_nOldTimer = getTimer();
				prevFrame();
			}
		}		
	}
}
и на кнопках

Код:
on(release) 
{
	g_bIsForwardDirection = true;
	
	if (_currentframe >= 111)
	{
		g_nInfoFrameID = 0;
		gotoAndStop(92);
	}
	else
	{
		g_nInfoFrameID ++;
		nextFrame();
	}
}
Код:
on(release) 
{
	g_bIsForwardDirection = false;
	
	if (_currentframe <= 92)
	{
		g_nInfoFrameID = g_pInfoFrames.length - 1;
		gotoAndStop(111);
	}
	else
	{
		g_nInfoFrameID --;
		prevFrame();
	}
}
кажется довольно громоздким :-(


Последний раз редактировалось iNils; 27.11.2007 в 13:54.
Создать новую тему Ответ Часовой пояс GMT +4, время: 14:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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