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

Вернуться   Форум Flasher.ru > Flash > Flex

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

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
По умолчанию ms:AnimateProperty остановка анимации с замедлением

Здравствуйте
У меня есть список вертикальный
При наведении мышки на определенные области он скроллируется вверх-вниз с использованием ms:AnimateProperty. Скроллируется вниз до конца и вверх до конца, а не пошагово с шагом в высоту каждого из айтемов.
Анимация scrollAnimationSlow долгая, список начинает скроллироваться медленно, затем ускоряется и в конце анимации снова замедляется (Cubic.easeInOut)
При отведении от области я ставлю scrollAnimationSlow на паузу и запускаю другую анимацию linearPauseAnimation скроллирования списка для того чтобы притормозить.
Я не вижу решения для нахождения значений для linearPauseAnimation для каждого из моментов времени.
Если выставить одни значения для linearPauseAnimation, то она "перехватывает" основную медленную анимацию без рывков только когда основная "разогналась" и к ней не применяются easing (так сказать)
Если же попытаться остановить основную анимацию scrollAnimationSlow во время разгона или торможения и после нее запустить анимацию linearPauseAnimation происходит, естественно, рывок.
Каким образом я могу в любой из моментов времени затормозить анимацию так чтобы она остановилась с замедлением ?

Код AS3:
<fx:Declarations>
		<mx:AnimateProperty id="scrollAnimationSlow"
							duration="3000" 
							toValue="{scrollPosY}" 
							target="{list.dataGroup}"
							property="verticalScrollPosition"
							easingFunction="Cubic.easeInOut"
							effectStart="scrollAnimationSlow_effectStartHandler(event)"
							effectEnd="scrollAnimationSlow_effectEndHandler(event)"/>
		<mx:AnimateProperty id="linearPauseAnimation"
							duration="1000" 
							target="{list.dataGroup}"
							property="verticalScrollPosition"
							easingFunction="Cubic.easeOut"
							effectStart="linearPauseAnimation_effectStartHandler(event)"
							effectEnd="linearPauseAnimation_effectEndHandler(event)"/>
	</fx:Declarations>
-------------------------------------------------
protected function upDirectionArrow_rollOverHandler(event:MouseEvent):void
			{
				scrollPosY=0;
				scrollAnimationSlow.play();
				dispatchEvent(new Event("sliderAnimationStarted"));
			}
 
			protected function upDirectionArrow_rollOutHandler(event:MouseEvent):void
			{
				if(scrollAnimationSlow.isPlaying)
				{
					scrollAnimationSlow.stop();
					atPausePosition=list.dataGroup.verticalScrollPosition-100;
					if(atPausePosition<0)
					{
						atPausePosition=0;
					}
					linearPauseAnimation.toValue=atPausePosition;
					linearPauseAnimation.play();
					dispatchEvent(new Event("sliderAnimationStarted"));
				}
			}
 
			protected function downDirectionArrow_rollOverHandler(event:MouseEvent):void
			{
				scrollPosY=list.dataGroup.contentHeight-list.height;
				scrollAnimationSlow.play();
				dispatchEvent(new Event("sliderAnimationStarted"));
			}
 
			protected function downDirectionArrow_rollOutHandler(event:MouseEvent):void
			{
				if(scrollAnimationSlow.isPlaying)
				{
					scrollAnimationSlow.stop();
 
					atPausePosition=list.dataGroup.verticalScrollPosition+100;
					if(atPausePosition>(list.dataGroup.contentHeight-list.height))
					{
						atPausePosition=list.dataGroup.contentHeight-list.height;
					}
					linearPauseAnimation.toValue=atPausePosition;
					linearPauseAnimation.play();
					dispatchEvent(new Event("sliderAnimationStarted"));
				}
			}


Последний раз редактировалось djyamato; 25.10.2012 в 17:41.
Создать новую тему Ответ Часовой пояс GMT +4, время: 17:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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