分类
Flash

将Web Service中的XML转换为AS3强类型对象

Web Service访问速度很慢,但有时不得不基于已有的Web Service开发Flash应用。大家都知道,Web Service是基于SOAP通信协议在HTTP之上进行信息交换。SOAP基于XML,访问起来不是很方便(使用E4x例外),如何将Web Service中的的XML对象或XMLList对象转换为AS3强类型对象或对象集合呢?比较常用的有两个解决方案:一是使用SchemaTypeRegistry.registerClass()方法通过使用限定命名空间来注册类。二是使用XMLDecoder类将XML转换为AS3对象。

分类
Flash

使用ActiotScript连接组合两个Array

有两个关联数组,如何将其中一个关联数组添加到另外一个数组中,当然关联数组中得有一个相同的属性,该属性性对于源数组是唯一的,对于目标数组可以重复或为空。这就好像是SQL中用inner join关键字将两个表通过外键连接起来。看下面的代码:

分类
Flash

数组的最大两个元素求和

其实用数组的sort方法或Math.max方法不难求得数组最大两个元素的和,但有人觉得这样做性能不高。那我们就不使用这两种ActionScript方法,而通过比较遍历数组元素来实现。看下面代码:

分类
Flash

使用FileReference加载本地XML文件并保存到本地

大家都知道,在Flash Player 10及更高版本中,FileReference添加了新功能:可以使用load()方法加载用户选择的本地文件,使用save()方法打开一个对话框将文件保存到本地文件系统。但加载本地XML文件并保存到本地时可能会遇到以下两个问题。

分类
Flash

Flex对象 vs AS3对象

Flex 4中的Object对象用<fx:Object/>来声明,而AS3中的Object用new Object或{}来实例化。他们本质上是一样的,但也有细微不同。

  1. 在Flex 4中,Object对象的属性值中有小于号、双引号和&,必须使用其相应的XML字符实体,比如:用&quot;代替双引号。而在AS3中,Object对象的属性值会忽略字符实体,可以直接使用这些特殊字符;
  2. 在Flex 4中,Object对象的属性值会忽略\r
    、\t等转义字符;而在AS3中,却允许属性值使用这些转义字符;
  3. 在Flex 4中,属性值如果是 十六进制色彩或以数字+ d(D)结尾,会自动转换为相应的数字;AS3中的Object的属性值没有这个问题。注意这一点是我最近才发现的的。看下面代码:
<s:ButtonBar>
    <s:ArrayList>
        <fx:Object label="5D" value="5d"/>
        <fx:Object label="#99D" value="#99d"/>
    </s:ArrayList>
</s:ButtonBar>

按钮栏的两个按钮都会自动转换为相应的数字,这都不是我们想要的。所以在开发中,如果使用Flex Object达不到要求,请改用AS3 Object。