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

推荐订阅源

Vercel News
Vercel News
B
Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
IT之家
IT之家
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
博客园_首页
C
Check Point Blog
博客园 - 【当耐特】
美团技术团队
Last Week in AI
Last Week in AI
A
About on SuperTechFans
雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
M
MIT News - Artificial intelligence
Martin Fowler
Martin Fowler
J
Java Code Geeks
B
Blog RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
Google Developers Blog
F
Fortinet All Blogs

博客园 - 剑廿三

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.