16 flash casting coding-style conventions actionscript-3
使用,效率或背景技术之间是否有任何差异
var mc:MovieClip = MovieClip(getChildByName("mc"));
Run Code Online (Sandbox Code Playgroud)
和
var mc:MovieClip = getChildByName("mc") as MovieClip;
Run Code Online (Sandbox Code Playgroud)
?
选择只是约定,偏好或是否有不能使用的情况?
Pau*_*ora 22
本文很好地描述了这些差异:
cast和as运算符之间的关键区别在于失败时的行为.在ActionScript 2中强制转换时,返回null.在ActionScript 3中强制转换时,会引发TypeError.使用ActionScript 3中的as运算符,只要转换失败,就会返回数据类型的默认值.
as也允许你转换为Array,这是因为转换函数Array()优先.
编辑:关于性能,as据报道使用比各种文章中的函数调用样式更快:[ 1 ] [ 2 ] [ 3 ].引用的第一篇文章着眼于深度和性能差异,报告as速度提高了4倍-4.5倍.
编辑2:as在正常的最佳情况下,不仅速度提高了4倍-4.5倍,而且当你(cast)在try-catch块中包装样式转换时,实际上最终会抛出错误,它更像是30x - 230x更快.在AS3中,如果你认为你要做一些特别的事情(因为它可能会引发错误),那么很明显你应该在跳跃之前先看一下.除非被API强制使用,否则永远不要使用try/catch,这实际上意味着永远不会(cast) 看到try/catch的性能影响,即使没有抛出异常也是有益的.即使在没有出错的情况下,设置try/catch块也会有性能损失.
| 归档时间: |
|
| 查看次数: |
6712 次 |
| 最近记录: |