当前位置:  开发笔记 > 后端 > 正文

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

如何解决《为什么mx:states无法解析为组件实现?》经验,为你挑选了1个好方法。

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

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

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

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

...

而不是:

...

让这个陌生人(至少对我而言)是标签的孩子 - 没有这个问题.mx:状态无法解决,但其子mx:State可以.并且mx:SetProperty - mx:State的子节点 - 也被解析了.

任何人都可以解释这个问题,并且/或者提供一个比我想出的问题更好的解决方案吗?

顺便说一句,我看到与mx:transitions相同的问题.



1> Josh Tynjala..:

如果您有自定义组件,则可能将其放在除mx之外的命名空间中.通过删除命名空间,您已走上正轨,但您不必这样做.请考虑以下示例



在该代码中,我们在com.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以外的其他命名空间.


    
    

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

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有