ActionScript动态类型?

时间:2009-11-25 02:32:56

标签: actionscript

我对我的ActionScript项目中的代码感到好奇:

public var _p:Object 
...

在一个函数中:

public function WObject(pp:MovieClip)
{
    _p = pp;
    _p.Play();
}

Play()函数位于MovieClip但不是Object; ActionScript可以允许这样的语法吗?

1 个答案:

答案 0 :(得分:0)

由于任何AS3对象都是Object的子对象,因此可以将MovieClip向下转换为Object。这是可能的,因为AS3对象的动态特性(因为AS3基于ECMAScript),这将允许您在包含MovieClip的Object上调用诸如play()之类的方法,而不会让编译器/播放器向您抛出尖锐的对象。

如上所述,除非绝对必要,否则以这种方式向下倾斜通常是一种良好的做法 ,因为这会使代码难以理解并因此维持。

其他考虑因素是编译时类型检查和代码提示(参数提示,代码完成等)。如果您选择向下转换为对象,则无法使用这些内容。