昨天改ABPlayer的时候想要加个屏蔽效果,在网上找了找知道应该用itemrenderer,于是我用flash builder4自带的提示加入了一个itemrenderer
创建后默认代码是这样的
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="true">
<s:Label text="{data}"/>
</s:ItemRenderer>
但是之后就出问题了,运行的时候卡在载入flash条的那里,于是我不得不去adobe官网下了个debugger版的flash来调试
调试时发现报错为1009
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at spark.components::Group/addElement()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\Group.as:1342]
at spark.components.gridClasses::GridLayout/createTypicalItemRenderer()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\gridClasses\GridLayout.as:748]
at spark.components.gridClasses::GridLayout/updateTypicalCellSizes()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\gridClasses\GridLayout.as:883]
at spark.components.gridClasses::GridLayout/measure()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\gridClasses\GridLayout.as:444]
at spark.components.supportClasses::GroupBase/measure()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\supportClasses\GroupBase.as:1148]
at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::measureSizes()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:8506]
at mx.core::UIComponent/validateSize()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:8430]
at spark.components::Group/validateSize()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\Group.as:1012]
at mx.managers::LayoutManager/validateSize()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:665]
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:792]
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1180]
完全不知道是怎么回事,跟踪也跟踪不出什么问题来,只知道是初始化创建renderer时出错了,于是从昨天下午到今天早上都在查这个错误,把renderer改了各种各样的写法都无果。不管是国内的论坛还是官网的论坛都看过了,虽然也有同样的错误号,但和我的问题也不是一回事。
后来看了http://stackoverflow.com/questions/6587477/custom-coloring-error-in-flex-4-5-mobile受启发改了一下render类型,尝试了LabelItemRender,DefaultItemRender直到换成DefaultDataGridItemRender终于对了。
package
{
import spark.skins.spark.DefaultGridItemRenderer;
public class rendererd extends DefaultGridItemRenderer
{
public function rendererd()
{
super();
}
}
}
但是到最后也不知道为什么默认那样的ItemRenderer不行。不过既然已经能用了,那就先把详细情况放在这里以后再说吧。
总之,加载flash的时候报这个错误大概是因为组件的类型不符导致在类型转换的时候失败,解决方案大概是换一种合适的组件就好了。