gpt4 book ai didi

apache-flex - 为什么 mx :states have trouble being resolved to a component implementation?

转载 作者:行者123 更新时间:2023-12-03 18:24:58 28 4
gpt4 key购买 nike

当我在 MXML 文件中设置状态时,我时不时会收到错误消息。我得到的错误说 mx:states 无法解析为组件实现。

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

http://life.neophi.com/danielr/2007/01/could_not_resolve_to_a_compone.html

我想出的解决方法是不使用任何命名空间。
所以,我的代码看起来像这样:

<states>...</states>

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

让这个陌生人(至少对我而言)是标签的 child - - 没有这个问题的事实。 mx:states 无法解析,但其子 mx:State 可以。并且 mx:SetProperty - mx:State 的子级 - 也已解决。

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

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

最佳答案

如果您有自定义组件,您可能会将它放在 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>

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

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

要在解释中更进一步,您可以更改 http://www.adobe.com/2006/mxml命名空间不是 mx。
<zzz:VBox xmlns:zzz="http://www.adobe.com/2006/mxml">
<zzz:states>
</zzz:states>
</zzz:VBox>

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

关于apache-flex - 为什么 mx :states have trouble being resolved to a component implementation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/369120/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com