一、 AS3转换成.NET(以ToNetType.mxml和ToNetType.cs为例)
1. 基本类型的数据
比如说我们用一个方法要向服务器端发送一个人的基本信息:比如姓名、年龄和婚姻状况,可以简单地把姓名、年龄和婚姻状况作为该方法的参数传递。参数的个数及前后位置要和.Net对应,参数一多,很容易出错。而且很多时候还需要用.Net再次转换。此类数据转换基本上是一一对应,和HTTP Service和Web Service差不多,体现不了Remoting Service技术的优势。请参看源文件中的sendArgs方法。
2. 数组类型
同样是上述情形,如果改用数组为参数,方法会看起来简洁很多。不过仍然数组的元素的前后位置也必须与服务器端一致。AS3数组通过Fluorine转换为.NET的IList接口数据类型,详情请参看sendArray方法。
3. 关联数组类型
联数组其实就是Object对象,它可以让我们动态添加属性。参数变成了Object对象的属性,再将Object对象高级参数传递,再也不用担心AS与.Net文件中方法的参数个数及顺序必须一致了。AS3关联数组通过Fluorine转换为.NET的Hashtable,请参看AssoArray方法。
4. DTO/VO对象数据类型
再通过Fluorine,我们可以将自定义ActionScript 类(DTO/VO,如Person.as)转换为.NET的自定义类(如Person.cs),从而实现AS3与.NET的Mapping(映射)。如sendVO方法,这两个类的类名可以不一样,属性名和属性个数都可以不一样(为了好记,最好相同)。实现映射有以下两种方法:
(1) 在ActionScript 类必须添加元数据标签: [RemoteClass(alias=".Net全限定类名")]
(2) 在web.config 文件中添加classMappings节点
<classMappings>
<classMapping>
<type>.Net全限定名</type>
<customClass>AS3全限定类名</customClass>
</classMapping>
</classMappings>
在某些情况下第一种方法失效,可以尝试第二种方法。很显然,用ValueObject向.NET传递数据是最方便的。
当然还有ByteArray数据类型也是很重要的,比如说常见的大头拍应用,传统的方法在服务器端进行二进制编码是很麻烦效率也很糟糕的事。如果用Fluorine对AS3和.NET都直接使用ByteArray数据类型,那就方便高效多了。
admin#flashas.net (#为@) 联系QQ:
:40777822
浙ICP备06033001号