如何检测 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));
我对 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));