如何检测 class 实例来自 flash(as3)

How to detect what class an instance is from in flash(as3)

我对 Flash 比较陌生,我正在尝试制作一个小游戏。 为此,我需要检测玩家是否点击了飞机或鸟。

我正在使用 addChild 生成它们并生成每个实例的名称。 事件监听器附加到实例。

我试过那样检测它,但它无法正常工作。 它检测到点击(它打印出 shot: instance 但不是 if 中的跟踪命令),但没有被点击。

function shoot(e: MouseEvent): void {
    trace("shot: "+ e.target.name);
    if (e.target is Plane) {
        trace("shot plane");
        e.target.parent.removeChild(e.target);
        gotoAndStop(3);
    }
    if (e.target == Bird) {
        trace("shot bird");
        score += 1;
        e.target.parent.removeChild();
    }
}

有人有提示吗?

尝试使用 e.currentTarget 而不是 e.target

if (e.currentTarget is Plane) {
    ...
}
if (e.currentTarget is Bird) {
    ...
}

事件的当前目标 是对您添加了事件侦听器的项目的引用。另一方面,target 是实际点击的项目(可以与当前目标相同,或者它的 descendant/child 对象)

您可以使用getQualifiedClassName检查对象类型:

trace(flash.utils.getQualifiedClassName(e.currentTarget));