最近在做Flex的一些学习,需要对Flex组件重写,当然可以两种选择MXML和ActionScript3.0重写,当然MXML的可视化的操作为重写提供了方便,但是要是更改组件的默认属性和添加一些框架属性ActionScript是必须的。我的经历重写一个可以最大化,最小化,关闭的Panel,这是改变Flex中Panel的本质属性的,只用通过ActionScript3.0来完成了。
网上有个SuperPanel和Flexlib写的相当成熟和不错,我选择的是SuperPanel(个人觉得代码写的相当漂亮)。
写好以后,就是MXML中应用了由于继承了Panel,所以可以直接在
代码如下 | 复制代码 |
|
当你想在Reperter中这样使用的话,就会报错,看代码:
代码如下 | 复制代码 |
title="{chatWindow.currentItem.label}" x="20" y="20" width="300" height="200" minWidth="200" minHeight="100" horizontalAlign="center" verticalAlign="middle" allowDrag="true" allowResize="true" allowClose="true" allowMaximize="true" allowMinimize="true" sizeRatio="{true ? '4:3' : null}" resizeEffect="Resize" moveEffect="Move" close="this.parent.removeChild(myPanel);" > |
这里就会报错,1067: Array 类型值的隐式强制指令的目标是非相关类型 flash.display:DisplayObject ,我就不能理解,为什么是继承Panel来的,但这里就成为非DisplatObject了,不可理解,上面的测试明显是DisplayObject,而且经过编译可以知道SuperPanel就是Panel的加强版!这里编辑器应该可以获得信息,无奈Google+Baidu
最后还是没有解决,去了Adobe官网。
代码如下 | 复制代码 |
title="{chatWindow.currentItem.label}" x="20" y="20" width="300" height="200" minWidth="200" minHeight="100" horizontalAlign="center" verticalAlign="middle" allowDrag="true" allowResize="true" allowClose="true" allowMaximize="true" allowMinimize="true" sizeRatio="{true ? '4:3' : null}" resizeEffect="Resize" moveEffect="Move" close="this.parent.removeChild(myPanel);" > |
错误得到解决,花了几个小时的时间,最后总是解决了。