【发布时间】:2014-01-15 23:36:47
【问题描述】:
我想实现这个方法
function isInstance(a:Class, b:Class):Boolean;
这就是 AS3 处理类的方式。 请注意,MovieClip 扩展了 Sprite。
trace(MovieClip is Sprite); // false
trace(Sprite is MovieClip); // false
trace(Sprite is Sprite); // false
trace(Sprite is Object); // true
我一直在尝试下一个代码,但它不起作用:
/**
* return if instance of class 'a' can be cast to instant of class 'b'
*/
private function isInstance(a:Class, b:Class):Boolean{
var superclass:Class = a;
do {
if (superclass == b) {
return true;
}
superclass = getSuperClass(a);
} while (superclass != null);
return false;
}
private function getSuperClass(claz:Class):Class{
var qualifiedSuperclassName:String = getQualifiedSuperclassName(claz);
var returnValue:Class = getDefinitionByName(qualifiedSuperclassName) as Class;
return returnValue;
}
【问题讨论】:
-
@MichaelBrewer-Davis describeType 很贵,我的解决方案更好
标签: actionscript-3 flash class apache-flex casting