flex – 为什么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:. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |