我在ActionScript 3中有两个类型定义(类型为Class的引用),我需要弄清楚一个是另一个的基本类型(类或接口)。
我曾希望以下内容可行,但唉它没有:
var isBaseClass:Boolean = MouseEvent is Event;
为什么它没有,这是可以理解的,但它仍然会很好。我也不能使用describeType,因为对于类型为Class的对象,它实际上并不返回正确的继承链,而是返回类型Class和Object,这根本没有帮助。我可以在循环中使用getQualifiedSuperClassName,直到没有更多超类或匹配为止,但它不太理想,不适用于对接口进行类型检查。
任何人都有更好的主意吗?
答案 0 :(得分:4)
这是一个使用describeType没有问题的实例:http://wonderfl.net/c/h90R
trace(describeType(MouseEvent)..extendsClass)
输出:
<extendsClass type="Class"/>
<extendsClass type="Object"/>
<extendsClass type="flash.events::Event"/>
<extendsClass type="Object"/>
答案 1 :(得分:1)
我在某个地方看到了这个建议,但在实践中并没有真正尝试过:
var classA:Class = Event;
var classB:Class = MouseEvent;
trace(classA.prototype.isPrototypeOf(classB.prototype));
答案 2 :(得分:1)
var classA:Class = Event;
var classB:Class = MouseEvent;
trace(classA.prototype.isPrototypeOf(classB.prototype));
Lars回答说,这对我有用。确保基类是第一个(classA
)。 isPrototypeOf
类似于isSuperClassOf
。