132009
 

先做个题目吧:

var testNum:Number=662.382;
var testObj:Object=Object(testNum);
trace(testNum,testNum as int,int(testNum),testObj,testObj as int,int(testObj),testObj as Number);

这个的结果刚开始我以为会是

662.382 662 662 662.382 662 662 662.382

不过结果却是

662.382 null 662 662.382 null 662 662.382

在刚刚coding的时候使用PureMVC发送notification之前没有将value转为int就直接发送了,然后接收后将object使用as运算符转换为int发现结果为0。当时相当郁闷了。因此不使用强类型检查时应当特别注意数据类型,另外,使用as运算符也应当注意,避免以上情况,尽量使用显式类型转换。

其实这个问题非常非常基础,对于这种细节性的问题以后还得多注意注意。

Update:http://www.anujgakhar.com/2009/08/26/flex-casting-with-as-vs-casting-with-braces/ 这位老兄也同样遇到了这个问题,不过他比我解释地更为清楚,因此引用一下:)

  One Response to “ActionScript中使用as运算符类型转换时应当避免以下问题”

  1. 823191 642507 552596

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>