如何在 flash(as3) 中检测实例来自哪个类

Posted

技术标签:

【中文标题】如何在 flash(as3) 中检测实例来自哪个类【英文标题】:How to detect what class an instance is from in 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();
    

有人给点小费吗?

【问题讨论】:

【参考方案1】:

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

if (e.currentTarget is Plane) 
    ...

if (e.currentTarget is Bird) 
    ...

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

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

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

【讨论】:

以上是关于如何在 flash(as3) 中检测实例来自哪个类的主要内容,如果未能解决你的问题,请参考以下文章

来自 Textinput 的 Flash as3 比较

Flash AS3 帮助检测加载的文件

用flash as3语言如何将影片剪辑存入一个数组以及如何访问?

如何检测对象来自哪个类? Qt

如何更改 Flash as3 中的动态文本?

Flash / AS3 ...设计人员如何修改以编程方式添加的控件?