Flash 这意味着什么->;ClassA(obj作为MovieClip)或var var_a:ClassA=newsomeotherclass()
我真的对这些类型的陈述感到困惑: 这意味着什么:Flash 这意味着什么->;ClassA(obj作为MovieClip)或var var_a:ClassA=newsomeotherclass(),flash,actionscript-3,actionscript,Flash,Actionscript 3,Actionscript,我真的对这些类型的陈述感到困惑: 这意味着什么: 铸造时: var xyz=ClassA(obj作为MovieClip) 声明/定义时: var xyz:ClassA=newsomeotherclass() 我的意思是,在上面相同的语句中如何使用两个不同的类?这可能是因为继承关系吗 谢谢 五, xyz被声明为具有ClassA类型,因此只有当某个其他类是ClassA的子类时,此赋值才会起作用。否则,将在编译时抛出错误 var xyz = ClassA( obj as MovieClip ) 该语
var xyz=ClassA(obj作为MovieClip)代码>
var xyz:ClassA=newsomeotherclass()代码>
var xyz = ClassA( obj as MovieClip )
该语句的结果是双重转换:首先,将obj转换为MovieClip,然后转换为ClassA。如果这两种类型中的任何一种不在obj的类型层次结构中,则结果为null
。
除非obj不是MovieClip(在这种情况下,尝试将
null
强制转换为ClassA将导致运行时出现null指针异常),否则不会出现错误,因为您可以将任何内容分配给xyz-未指定任何变量类型 为什么我需要这样的东西?var xyz:ClassA=new SomeOtherClass(),当您继承一个具有ClassA类型变量的类,并且您继承的类需要使用它的子类型时。这种处理类型(虽然不是声明)的方法的一个众所周知的例子是DisplayObjectContainer.addChild(DisplayObject)
——您可以传入精灵、形状、MovieClip等——它们都继承DisplayObject,因此都可以添加到显示列表中。
var xyz = ClassA( obj as MovieClip )