Ros*_*son 4 apache-flex state transition
当我在MXML文件中设置状态时,我偶尔会遇到错误.我得到的错误说mx:states无法解析为组件实现.
我在下面的URL中读到,这个问题是由扩展组件引起的 - 它以某种方式抛弃了编译器解析mx:states的能力.我不明白为什么会这样,但我没有自己的答案.我也不一定能使这种方法适用于我的所有扩展组件.
http://life.neophi.com/danielr/2007/01/could_not_resolve_to_a_compone.html
我提出的解决方法是不使用任何命名空间.所以,我的代码看起来像这样:
<states>...</states>
Run Code Online (Sandbox Code Playgroud)
而不是:
<mx:states>...</mx:states>
Run Code Online (Sandbox Code Playgroud)
让这个陌生人(至少对我而言)是标签的孩子 - 没有这个问题.mx:状态无法解决,但其子mx:State可以.并且mx:SetProperty - mx:State的子节点 - 也被解析了.
任何人都可以解释这个问题,并且/或者提供一个比我想出的问题更好的解决方案吗?
顺便说一句,我看到与mx:transitions相同的问题.
Jos*_*ala 17
如果您有自定义组件,则可能将其放在除mx之外的命名空间中.通过删除命名空间,您已走上正轨,但您不必这样做.请考虑以下示例
<example:MyComponent xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:example="com.example.*">
</example:MyComponent>
Run Code Online (Sandbox Code Playgroud)
在该代码中,我们在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>
Run Code Online (Sandbox Code Playgroud)
可以将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>
Run Code Online (Sandbox Code Playgroud)
在该示例中,我们将mx更改为zzz.现在,states属性必须以zzz为前缀:而不是mx : .
| 归档时间: |
|
| 查看次数: |
5898 次 |
| 最近记录: |