但在项目渲染器中添加了自定义状态后,默认状态会覆盖原有状态,保留不了新增状态,因而会出现项目渲染器界面错乱的问题(如实例中第一个MX DataGrid)。怎么解决这一个问题呢?
首先要找到问题所在,幸好Flex SDK是开源的,我们可以很方便地查看源码。打开ItemRenderer.as,找到getCurrentRendererState()方法。查看其注释,提到很重要的一点:如果所需的行为与默认行为不同,则ItemRenderer的子类必须覆盖此方法以返回值。再查看ItemRenderer子类MXAdvancedDataGridItemRenderer和MXItemRenderer的源码,根本就没有getCurrentRendererState()重载该方法。这就导致在MX DataGrid和MX AdvancedDataGrid添加项目渲染器状态会出问题。但在Spark组件中添加状态没有这个问题,因为它们用的是ItemRenderer基类。
明白了这个原理,问题也就迎刃而解了。在自定义的渲染器组件中添加如下面的代码:
代码如下 | 复制代码 |
override protected function getCurrentRendererState():String |
为什么不加上返回默认状态的代码呢?那是因为项目渲染器的子类会继承父类的状态,因此返回currentState的值其实已经包含了返回默认状态值,当然也包括了新增的自定义状态值。
点击此处查看该实例最终效果,点击此处下载该实例的源码。
使用MXItemRenderer主要是为了兼容MX组件,建议尽量使用相应的Spark组件来代替。当然对于MX AdvancedDataGrid和MX Tree,大家也不用太担心,这个问题只在Flex 4.0/4.1中存在,Flex 4.5及其以上版本已经重写了ItemRenderer类,不存在这个问题
模拟极限越野
模拟极限越野开着大巴在各种奇葩路况里送乘客。山路弯道多得让人
模拟火车
模拟火车让你当回真正的火车司机,得先学会看信号灯、操作控制杆
可口的披萨美味的披萨
可口的披萨美味的披萨带您体验经营一家披萨店的乐趣。游戏画风温
定制虚拟偶像最新版
定制虚拟偶像最新版是一款超级经典有趣的日本模拟装扮类型的手游
病娇模拟器手机版正版(yandere simulator)
病娇模拟器最新版手游是一款萌妹二次元模拟游戏,玩家在游戏中可