将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对象。 继续阅读“将Web Service中的XML转换为AS3强类型对象”

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。