惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
V
V2EX
量子位
Last Week in AI
Last Week in AI
Jina AI
Jina AI
博客园 - 【当耐特】
爱范儿
爱范儿
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
小众软件
小众软件
IT之家
IT之家
博客园_首页
博客园 - 聂微东
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗

博客园 - 剑廿三

AirExcel -用于导出 Excel 2007 文件的 Flex AIR 组件 初版发布 Flex SQLite Batch Insert Datas from Array Flex 遍历 ArrayCollection, Array Flex SQLite: 一次执行多个SQL,查询两个表的数据,导入datagrid Flex AIR SQLite Flex AIR:用 mx:Image 实现的动态图片按钮 Flex AIR:Line Chart 示例-从 XML 原始数据运算得出增长率图表 Flex AIR:Line Chart 示例-用 XML 画图表很简单 Flex: 抓取网页,通过 XML 获取部分内容 Flex: 通过 DataGrid 操作 XML 文件 PSP 使用 Web FTP (JSP, on EeeBox) 的两项设定 PS3 的 UserAgent PSP2000 的 UserAgent Windows Vista Ultimate 上基于 IE7 的 Maxthon 2.1.5 的 UserAgent OEM正版Windows Vista Home Premium上的 IE8 的 UserAgent EeeBox B202 上基于 Windows XP Pro SP2 的 IE7 的 UserAgent EeeBox B202上基于 Windows XP Pro SP2 IE7 的 Maxthon 2.1.5 的 UserAgent OEM正版Windows Vista Home Premium上的 Firefox 3.5.5 中文版的 UserAgent OEM正版Windows Vista Home Premium上基于IE8的 Maxthon 2.5.9 的 UserAgent
Flex AIR: 使用透明 NativeWindow 窗体呈现 Line Chart 的一...
剑廿三 · 2010-06-18 · via 博客园 - 剑廿三

经过昨天一整天的反复试验、排错和线上检索,发现 AIR 在使用透明(transparent=true, showFlexChrome=false)的 NativeWindow 包裹一个含有 mx:LineChart 组件的 Window 窗体时,只要 mxml 文中出现任一个 <mx:LineChart/> 标记,就会报告以下异常,然后程式终止运行:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
 at mx.charts.chartClasses::CartesianChart/updateMultipleAxesStyles()[E:\dev\4.0.0\frameworks\projects\datavisualization\src\mx\charts\chartClasses\CartesianChart.as:2598]
 at mx.charts.chartClasses::CartesianChart/commitProperties()[E:\dev\4.0.0\frameworks\projects\datavisualization\src\mx\charts\chartClasses\CartesianChart.as:1360]
 at mx.core::UIComponent/validateProperties()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\UIComponent.as:7772]
 at mx.managers::LayoutManager/validateProperties()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:572]
 at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:700]
 at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1072]

据说是因为 Flex 内部代码中一个叫做 hslen 的对象取不到 horizontalAxisStyleName 的 len 引起的。莫名其妙。

更莫名奇妙的是,在一个比较简单的 AIR project 里使用相同参数配置是没有出现这个现象的。唯一的区别是发生异常的前者使用一个从文件中读取的  XML 作为这个 Line Chart 的数据源,没有发生异常的后者使用定义 XML 的方式作为这个 Line Chart 的数据源,虽然两份 XML 文本是一致的,参数配置是一致的,除数据源外的代码是一致的,但是结果截然不同。

看来不仅与透明窗体有关,也跟数据源定义方式、跟程式规模(SWF解压后占用的字节规模)有关。

在 fx:Script 里声明一个 LineChart 对象不会报异常,然而这样是不能把图形呈现出来的。

解决办法只能是不使用透明的 NativeWindow 包裹,直接对 Window 窗体实施 open() 调用。虽然这样不能去掉 OS 的镶边、不能做不规则外形的透明窗体,但是至少可以把图形呈现出来。

在Google上搜寻相关问题只得三个结果,而且自2009年2月至今都是未解之谜。百度就一个结果都没有。看来这是 Flex AIR 长久的 bug 了。

调试环境是 AIR 2.02, 1.5, Flash Builder 4.0 Premium.