Apache flex 在Flex4中,状态转换不需要';不要在两个方向上调整大小

Apache flex 在Flex4中,状态转换不需要';不要在两个方向上调整大小,apache-flex,flex4,state,transition,transitions,Apache Flex,Flex4,State,Transition,Transitions,我有两个州。当我从“关闭”切换到“关闭”时,它会正确调整大小,但当我从“返回”切换到“关闭”时,它会在没有平滑调整大小过渡的情况下发生。我做错了什么 这是我的密码: <?xml version="1.0" encoding="utf-8"?> <s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmln

我有两个州。当我从“关闭”切换到“关闭”时,它会正确调整大小,但当我从“返回”切换到“关闭”时,它会在没有平滑调整大小过渡的情况下发生。我做错了什么

这是我的密码:

<?xml version="1.0" encoding="utf-8"?>
<s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx">

  <fx:Script>
    <![CDATA[
      protected function butA_changeHandler(e:Event):void
      {       
        if ((e.target as ToggleButton).selected) {
          this.currentState="A";
        } else {
          this.currentState="off";
        }
      }
    ]]>
  </fx:Script>

  <s:states>
    <s:State name="off" />
    <s:State name="A" />
  </s:states>

  <s:transitions>
    <s:Transition fromState="off" toState="A" autoReverse="true">
      <s:Parallel duration="300">
        <s:Resize target="{content}" heightTo="{cA.height}" />
        <s:Fade targets="{cA}"/>
      </s:Parallel>
    </s:Transition>
    <s:Transition fromState="A" toState="off" autoReverse="true">
      <s:Parallel duration="300">
        <s:Resize target="{content}" heightTo="0" />
        <s:Fade targets="{cA}"/>
      </s:Parallel>
    </s:Transition>
  </s:transitions>

  <s:Group id="content" excludeFrom="off" width="100%" clipAndEnableScrolling="true">   
    <s:Group id="cA" includeIn="A" width="100%"><s:Label fontSize="70" text="A"/></s:Group>
  </s:Group>

  <s:HGroup>
    <s:ToggleButton id="butA" label="A" change="butA_changeHandler(event)"/>
  </s:HGroup>

</s:VGroup>

提前感谢,,
Nuno

自动反转
设置为true必须与第二次转换冗余。它已经定义了要关闭的。只需在第一次转换中添加一个
heightFrom

autoreverse
设置为true必须与第二次转换重复。它已经定义了要关闭的。只需在第一次转换中添加一个
高度from

在转换前处理includeIn和excludeFrom属性时,您应该同时使用AddAction和RemoveAction:


使用“heightFrom”和“widthFrom”从所需的尺寸开始调整大小,以便它们实际设置动画


*注意:使用includeIn=“A”意味着您还暗示conent将具有excludeFrom=“OFF”属性。这意味着您将无法混合使用添加/删除操作和includeIn/excludeFrom(一个用于添加视图,另一个用于删除视图)。

在转换之前处理includeIn和excludeFrom属性时,您应该同时使用AddAction和RemoveAction:


使用“heightFrom”和“widthFrom”从所需的尺寸开始调整大小,以便它们实际设置动画


*注意:使用includeIn=“A”意味着您还暗示conent将具有excludeFrom=“OFF”属性。这意味着您将无法混合添加/删除操作和includeIn/excludefom(一个用于添加视图,另一个用于删除视图)。

您好,Kodiak,谢谢。我在第一次转换中添加了
heightFrom
,并删除了
autoreverse
。我甚至在第二次转换中添加了
heightTo
。但仍然没有成功。我听说在转换过程中我可能需要
,但我不知道如何使用它。实际上,我正在考虑离开
自动转换,删除第二个转换;)
AddAction
链接到
AddChild
,您在这里没有使用它。我只是尝试了一下,它也不起作用。实际上,我想要构建的有几个状态:A、B、C、D。所以我希望有几个转换
(*到A)
(*到B)
(*到C)
,然后
(*到关闭)
。我有一个工作示例,它可以在a、B和C之间很好地切换。当我切换回OFF时,问题就出现了。使用
AddChild
有什么意义吗?我想你不需要
AddChild
,因为你使用的是
excludeFrom
:)很抱歉,我帮不了你更多忙…嗨,科迪亚克,谢谢。我在第一次转换中添加了
heightFrom
,并删除了
autoreverse
。我甚至在第二次转换中添加了
heightTo
。但仍然没有成功。我听说在转换过程中我可能需要
,但我不知道如何使用它。实际上,我正在考虑离开
自动转换,删除第二个转换;)
AddAction
链接到
AddChild
,您在这里没有使用它。我只是尝试了一下,它也不起作用。实际上,我想要构建的有几个状态:A、B、C、D。所以我希望有几个转换
(*到A)
(*到B)
(*到C)
,然后
(*到关闭)
。我有一个工作示例,它可以在a、B和C之间很好地切换。当我切换回OFF时,问题就出现了。使用
AddChild
有什么意义吗?我想你不需要
AddChild
,因为你使用的是
excludeFrom
:)对不起,我帮不了你太多忙了……你好,凯文,非常感谢!它就像一个符咒。尽管如此,老实说,尽管我已经在Adobe Flex文档中读到了这方面的内容,但我仍然不太理解AddAction/RemoveAction的必要性:-(如果您愿意解释,我将不胜感激。谢谢!NunoSo您的意思是我不能将addAction/removeAction与使用includeIn/excludeFrom的目标一起使用?这很令人困惑,因为即使示例中没有,这正是我在现实生活中需要的。addAction/removeAction和includeIn/excludeFrom都在做s。)ame thing-向显示列表中已存在的父容器添加显示对象或从父容器中删除显示对象。问题在于,您希望使用转换在通过excludeFrom从显示列表中删除的显示对象上触发动画。之前的顺序是:状态更改->includeFrom/excludeFrom的处理->转换已处理您可以先手动播放动画,然后更改viewstate以解决问题:手动播放动画,不添加/删除操作->状态更改我刚刚用示例创建了一个新问题,但仍然不起作用(因为我现在在另一个组件中没有组件):。我试图应用你刚才解释的内容,但仍然没有成功……你好,凯文,非常感谢!它起了很大的作用。不过,老实说,尽管我已经在Adobe Flex文档中读到了有关它的内容,但我仍然没有成功
<s:transitions>
        <s:Transition fromState="off" toState="A" autoReverse="true">
            <s:Sequence>
                <s:AddAction target="{content}" />
                <s:Parallel duration="300">
                    <s:Resize target="{content}" heightTo="{cA.height}" />
                    <s:Fade targets="{cA}"/>
                </s:Parallel>
            </s:Sequence>

        </s:Transition>
        <s:Transition fromState="A" toState="off" autoReverse="true">
            <s:Sequence>
                <s:Parallel duration="300">
                    <s:Resize target="{content}" heightTo="0" />
                    <s:Fade targets="{cA}"/>
                </s:Parallel>
                <s:RemoveAction target="{content}" />
            </s:Sequence>
        </s:Transition>
    </s:transitions>

    <s:Group id="content" width="100%" clipAndEnableScrolling="true">   
        <s:Group id="cA" includeIn="A" width="100%"><s:Label fontSize="70" text="A"/></s:Group>
    </s:Group>