Flex/AIR开发遇到问题记录

1. 2010-11-? Number 对象 toFixed 方法存在如下问题:

对数字0调用该方法,如 0.toFixed(0) 返回结果为 0.   (多了个小数点,当 数字小于 1 时均存在该问题).

解决: 替代方法:使用 Math.round(numberObject ) . toString()  ,  此时得到结果为 0。

 

Q2. 2011-1-7 运行TourDeFlex中的例子 Sample-AIR2-NativeProcess 时出现异常:

Error #3214: NativeProcessStartupInfo.executable does not specify a valid executable file.

原因: 创建 File 对象时的路径分隔符为 \  导致。

解决: 将分隔符改为 / 即可。

疑问:该例子来源比较权威,为何会有问题呢?是Flex版本问题还是其他什么原因?

 

Q3. 2011-1-26 TourDeFlex中的例子 Sample-AIR2-NativeProcess 发布时出现异常:

原因: 要调用本地进程的话,只能将安装程序变成 native installer,不能发布成air格式,

解决: 发布时 Export 选项要按如下选择:

注:将  sample-app.xml 中  <supportedProfiles>extendedDesktop</supportedProfiles> 改为

<supportedProfiles>desktop extendedDesktop </supportedProfiles>  , 则可以成功打包为air文件,但在 Ubuntu 下安装途中失败, 而Flash Builder 4又没有 for linux 的版本,这怎么调试调用 linux 的本地进程 呢?虽然该实例中有相应的代码,但却无法调试。Oh my ladygaga!

 

 

Q4. 2011-1-24 分页(使用了LinkButton组件,组件属性代码中有用到 item Object 的 data 属性)浏览数据时,debug模式下出现:

warning: unable to bind to property 'data' on class 'Object' (class is not an IEventDispatcher).

原因: 构造页码数据列表(ArrayCollection类型)时 item 对象是Object {label: ...,  data: ...} 形式添加的。

解决: 1)将 item 对象改为自定义的data model ,该自定义的data model 是 extends EventDispatcher 的;

             2)item 对象通过 new ObjectProxy({label: ..., data: ...}) 方式构造。

至于为什么要 extends EventDispatcher  尚有待继续学习研究

 

Q5. 2010-11 使用了mx.controls.ComboBox 组件实现的下拉框,在第一次点击下拉列表时,下拉列表总是会自动缩回去,之后就没问题了。

 

原因: 疑似Flex bug。

解决: 未解决。

         (2011-6-22 今天运行AIR应用,提示升级AIR,升级到2.7.0.19480后,该问题MS已经不存在了,同时经过验证发现该问题与程序所用的SDK是无关的。

 

Q6. 2011-2-16 使用 BlazeDS 实现服务端与客户端的通信,调用某服务时出现 Introspection Error:


原因: 该服务存在 overload 方法。

解决: 重命名 overload 方法。

 

Q7. 2011-4-28 ArrayCollection获取 getItemIndex 时出现的问题:

对该 ArrayCollection 对象应用了排序规则,当获取 item index 时,偶尔会得不到预期的结果(该item确实是存在的,但 index 返回为 -1),试过调用 sort.findItem 方法也一样找不到 item。

也有其他人碰到类似问题,see: http://bbs.9ria.com/viewthread.php?tid=80594&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D216

原因: 大致可以确定是由于应用了sort 的关系。

解决: 疑似 Flex bug 。

替代解决方法:每次getItemIndex 前调用下 refresh() 方法,则能得到正确的index。

 

Q8. 2011-8-23 之前开发的自定义的itemrenderer,有normal、hovered2个状态,有个图片按钮仅包含在 hovered状态 ,以前开发时测试功能是没有问题,今天突然发现该图片的click事件失效了。经过调试,只要不限制 hovered状态则click事件起效。

原因: 大致定位到:在按下图片时,状态已不是hovered。

应该是SDK内部对itemrenderer有所改动。(原使用SDK4.0, 在4.5.1下出现该问题,4.1下不确定)。

解决:  

替代解决方法:避免使用根据 hovered 状态触发的操作,可以用 rollover 替代实现类似效果。

 

Q9. 2011-11-18 今早启动PC,提示Flash Player更新,更新后运行1个AIR应用 (自开发产品),结果该应用的皮肤变成了一片空白,所有的窗口的标题栏都不见了,而一些图标什么的仍然显示正常。之后即使卸载了Flash Player也无济于事,也无法确定是否和它有关。换了该AIR应用的另1个版本,显示正常。使用该版本始终不正常。

原因: 不明。跟踪ing。