![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2003
Сообщений: 74
|
Второй день безуспешно рою документацию по Flex2 и AS3, чтобы решить следующую задачу. В разделе "Lessons" help'а есть пример "Use View States and Transitions". Этот пример показывает, как анимировать переход из одного состояние (state) программы в другое (из base в Advanced). При переходе в Advanced анимируется появление на экране дополнительных элементов интерфейса. Это делается с помощью создания Transition: <mx:Transition id="myTransition" fromState="*" toState="Advanced">.
В качестве задачки для освоения Flex я решила при обратном переходе (из Advanced в base) точно также анимированно спрятять появившиеся дополнительные элементы. Решить задачу c помощью создания еще одной Transition не удалось - как я понимаю, при переходе от одного состояния к другому смена состояния осуществляется в первую очередь - и только потом выполняются прописанные в Transition действия. Видимо, в состоянии Advanced нужно заменить в <mx:SetEventHandler target="{linkbutton1}" name="click" handler="currentState=''"/> параметр handler с "currentState=''" на вызов процедуры, которая сначала анимированно уберет с экрана "лишние" элементы интерфейса, и лишь затем поменяет currentState на base. Если я правильно понимаю, для этого можно попробовать использовать следующую конструкцию: <mx:Script>
<![CDATA[
public function changeStateFromAdvancedToBase():void {
???
}
]]>
</mx:Script>
<mx:State name="Advanced">
...
<mx:SetEventHandler target="{linkbutton1}" name="click" handler="changeStateFromAdvancedToBase()"/>
</mx:State>
Вопрос 1: В MXML я могла бы задать анимированное исчезновение, например, так: <mx:Parallel target="{myVBox}">
<mx:WipeUp duration="2000"/>
<mx:Dissolve alphaFrom="1.0" alphaTo="0.0" duration="2000"/>
</mx:Parallel>
Вопрос 2: Как в AS3 заставить программу перейти в новое состояние? В help'е описан класс State - но в его описании я не нашла способа сделать конкретный State текущим. В классе Application я также не нашла ни способа найти возможные State'ы Application'а, ни способа определить или поменять currentState. |
![]() |
Часовой пояс GMT +4, время: 20:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|