加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex – 为什么mx:states无法解析为组件实现?

发布时间:2020-12-15 01:48:57 所属栏目:百科 来源:网络整理
导读:当我在M XML文件中设置状态时,我偶尔会遇到错误.我得到的错误说mx:states无法解析为组件实现. 我在下面的URL中读到,这个问题是由扩展组件引起的 – 它以某种方式抛弃了编译器解析mx:states的能力.我不明白为什么会这样,但我没有自己的答案.我也不一定能使
当我在M XML文件中设置状态时,我偶尔会遇到错误.我得到的错误说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>

让这个陌生人(至少对我而言)是标签的孩子 – 没有这个问题. mx:状态无法解决,但其子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:.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读