Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 为什么mx:states在解决组件实现问题时遇到困难?_Apache Flex_State_Transition - Fatal编程技术网

Apache flex 为什么mx:states在解决组件实现问题时遇到困难?

Apache flex 为什么mx:states在解决组件实现问题时遇到困难?,apache-flex,state,transition,Apache Flex,State,Transition,当我在MXML文件中设置状态时,偶尔会出现一个错误。我得到的错误是mx:states无法解析为组件实现 我在下面的url上读到,这个问题是由扩展组件引起的——它以某种方式破坏了编译器解析mx:states的能力。我不明白为什么会这样,但我自己没有任何答案。我也不一定能使这种方法适用于我所有的扩展组件 我提出的解决方法是不使用任何名称空间。 因此,我的代码如下所示: <states>...</states> 。。。 而不是: <mx:states>...&

当我在MXML文件中设置状态时,偶尔会出现一个错误。我得到的错误是mx:states无法解析为组件实现

我在下面的url上读到,这个问题是由扩展组件引起的——它以某种方式破坏了编译器解析mx:states的能力。我不明白为什么会这样,但我自己没有任何答案。我也不一定能使这种方法适用于我所有的扩展组件

我提出的解决方法是不使用任何名称空间。 因此,我的代码如下所示:

<states>...</states>
。。。
而不是:

<mx:states>...</mx:states>
。。。
让这个陌生人(至少对我来说)是因为标签的孩子们没有这个问题。无法解析mx:states,但其子项mx:State可以解析。mx:State的子级mx:SetProperty也被解析

有谁能解释这一点,和/或提供比我提出的更好的解决方案


顺便说一句,我在mx中看到了同样的问题:转换。

如果您有一个自定义组件,那么它可能位于mx以外的命名空间中。删除名称空间是正确的,但不必这样做。考虑下面的例子

<example:MyComponent xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:example="com.example.*">
</example:MyComponent>

在该代码中,com.example包中有一个名为MyComponent的自定义组件。现在,我们如何添加自定义状态?很简单

<example:MyComponent xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:example="com.example.*">

    <example:states>
        <mx:State name="CustomState">
        </mx:State>
    </example:states>

</example:MyComponent>

组件的属性(如状态、转换,甚至按钮上的标签)可以创建为子元素。这些属性必须使用与组件实例相同的命名空间。属性在继承链中来自何处并不重要。即使com.example.MyComponent扩展了mx.containers.Canvas,states属性也将使用定义MyComponent的XML命名空间

简而言之,不要将states属性视为mx:states,因为属性的mx:prefix只是从组件继承的。但是,我们必须使用mx:当我们定义实际状态本身时,因为这是一个类(不是属性),而该类是在mx名称空间中定义的

为了进一步解释,可以将名称空间更改为mx以外的名称空间


在该示例中,我们将mx更改为zzz。现在,states属性的前缀必须是zzz:,而不是mx:。



为什么会失败?我还发现,当我定义了多个名称空间时,这会失败。删除
Josh,谢谢回复。您能否进一步解释为什么mx在扩展实现该命名空间的组件的组件中不是有效的命名空间?为什么这不是mx:Button的问题?事实上,我不是说“为什么mx不是有效的名称空间”——我的意思是,为什么“mx:states不可解析”。谢谢你的进一步澄清,Josh。很抱歉接受了这么久。回复很好-StackOverflow宕机了,所以我必须自己解决这个问题,我也解决了,但这正是我遇到的问题,文档中没有涉及到这一点。。
<zzz:VBox xmlns:zzz="http://www.adobe.com/2006/mxml">
    <zzz:states>
    </zzz:states>
</zzz:VBox>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
         width="100%" 
         height="100%"
         backgroundColor="#f7f7f7" 
         xmlns:common="com.americanexpress.voice.view.component.common.*">
    <mx:states name="edit">