旅游网站的设计代码,网站后台有安全狗,网页设计概览图,常用网址之前一直以为as就是强制类型转换#xff0c;只是as是AS3中新的语法#xff0c;之前用在有继承关系的对象之间的转换也无甚区别#xff0c;但是今天却让我领悟到了它俩之间的区别。原起#xff1a;今天要给ColorPicker控件动态赋值#xff0c;它的selectedColor属性接收的是… 之前一直以为as就是强制类型转换只是as是AS3中新的语法之前用在有继承关系的对象之间的转换也无甚区别但是今天却让我领悟到了它俩之间的区别。原起今天要给ColorPicker控件动态赋值它的selectedColor属性接收的是一个uint属性而我要从另一个对象中拿过来的属性是String的理所当然的我写了如下的代码经过var color:uint str as uint;//str是String类型大概是这个样子var color:uint str as uint;//str是String类型大概是这个样子 显然没有效果跟踪之后color是null值于是换成 var color:uint uint(str); var color:uint uint(str); 这样却好使了好奇的我google了一下果然有关于我遇到的问题。 文中是这样说的作者与我遇到了同样的问题以下是引用内容转自http://www.cnblogs.com/Longbin/articles/2064004.html以前AS中是这样进行强制类型转换的假设有一个类叫做Class1我们声明了一个它的对象 c1如果想要将它转换成Class2类型只要这样写Class2(c1);在AS3中你依然可以这样写但是AS3 中提供了一个新的操作符 as 并且推荐使用as 进行强制转换上述的例子用 as 操作符实现就是这样c1 as Class2;使用 as 操作符有几个好处1.它的效果和第一种方法是一样的。2.如果类型不兼容无法转换就会返回null而不是出错。这样你就可以自定义错误的时候该做什么。3.没有运行时错误Run Time Error提示。不过有些时候我在使用 as 的时候并不能达到强制转换的目的在AS3.0类库中最高层类Top Level classes所有Top Level classes的列表之间进行强制转换时 as 操作符是不起作用的。比如假如你想要将一个String 类型的字符串 str 转换成 Number 类型的数字 num 时可能想要这样写num str as Number;这样写是没有用的你只能通过第一种方法来达到强制转换的目的num Number(str);PS:如果我们用as来转换的话,除非MyObj1和MyObj2有继承关系,否则转换将失败,而用强制类型转换则不一定,只要MyObj1类有自定义类型转换函数MyObj2,则可能转换成功,因为强制类型转换针对的是编译时类型,而对于编译时类型o1为object类型,并没有自定义转换为MyObj2的函数.as和强制类型转换的区别在于,as不会在意是否存在自定义类型转换函数,它针对的时运行时类型,所以as转换成功的可能性只有2者具有同一运行时类型,即2者具有相互继承关系;而强制类型转换会执行自定义转换函数,并且它针对的是编译时类型,所以要注意(2)类似的错误.还有as不能用于Int(float)等值类型.我们常用到的foreach用的是强制类型转换,因为它需要能对Int等类型支持.is的原理与as类似,不过它返回bool类型,is可与强制类型转换搭配使用,可避免转换异常,但最好不要把is和as搭配,实际上is也做了as的转换操作,这样会影响效率.以上是引用内容。 结论as和强制类型转换原理是不一样的前者适用于存在继承关系的对象中针对的是运行时类型后者执行自定义转换函数针对的是编译时类型。 转载于:https://blog.51cto.com/4769069/1215710