【问题标题】:How to detect what class an instance is from in flash(as3)如何在 flash(as3) 中检测实例来自哪个类
【发布时间】:2016-01-05 03:52:28
【问题描述】:

我对 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();
    }
}

有人给点小费吗?

【问题讨论】:

    标签: actionscript-3 flash flash-cc


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 2016-03-16
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多