我对我的ActionScript项目中的代码感到好奇:
public var _p:Object
...
在一个函数中:
public function WObject(pp:MovieClip)
{
_p = pp;
_p.Play();
}
Play()
函数位于MovieClip
但不是Object
; ActionScript可以允许这样的语法吗?
答案 0 :(得分:0)
由于任何AS3对象都是Object的子对象,因此可以将MovieClip向下转换为Object。这是可能的,因为AS3对象的动态特性(因为AS3基于ECMAScript),这将允许您在包含MovieClip的Object上调用诸如play()之类的方法,而不会让编译器/播放器向您抛出尖锐的对象。
如上所述,除非绝对必要,否则以这种方式向下倾斜通常是一种良好的做法 ,因为这会使代码难以理解并因此维持。
其他考虑因素是编译时类型检查和代码提示(参数提示,代码完成等)。如果您选择向下转换为对象,则无法使用这些内容。