|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Sep 2002
Сообщений: 202
|
прокручивание ролика в обоих временных направлениях
Приветствую
У меня стоит следующая задача: * есть 20 кадров ролика (вращение 3D объекта - сделано через 20 jpeg кадров) * есть 2 кнопки "назад" и "вперед" надо чтобы когда пользователь нажимал кнопку назад ролик прокручивался назад, а нажимая кнопку вперед - ролик прокручивался вперед на некоторых кадрах ролик должен останавливаться чтобы вывести некоторую дополнительную информацию Я сделал следующим образом 1) добавил слой команд и в каждом кадре сделал 2) добавил второй слой команд, общий для всех 20 кадров и * вписал туда глобальную переменную * код для перемотки ролика вперед или назад через определенные промежутки времени черех и 3) на кнопки навесил код который при нажатии изменяет переменную g_bIsForwardDir в ту или иную сторону Все работает, но мне кажется что это излишне коряво и можно обойтись более элегантными и правильными способами, Например мне очень не нравится 20 команд stop(); подскажите как правильно сделать |
|
|||||
[+1 06.04.11]
Регистрация: Jul 2007
Сообщений: 110
|
Думаю setInterval();
|
|
|||||
Регистрация: 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(); } } Последний раз редактировалось iNils; 27.11.2007 в 13:54. |
Часовой пояс GMT +4, время: 14:09. |
|
« Предыдущая тема | Следующая тема » |
|
|