【发布时间】:2015-03-29 15:36:14
【问题描述】:
我正在开发拖放游戏。我无法成功获取e.target 名称。
我正在使用以下内容:
private function stopDragObject(e:MouseEvent):void
{
if (e.target.hitTestObject(e.target.name+"Field")) // here I should get name
{
trace(e.target + "Field");
trace(e.target.name + "Field");
trace(e.target.label + "Field");
e.target.x = (e.target).x;
e.target.y = (e.target).y;
}
想法是我有对象Item1,如果它命中Item1Field 应该会成功。但现在我无法正确获取e.target 名称。我已将跟踪用于测试目的,它返回以下内容:
trace(e.target);
OUTPUT: [object Item1]Field
trace(e.target.name);
OUTPUT: instance55Field
trace(e.target.label);
OUTPUT: undefinedField
它应该返回Item1Field你有什么想法吗?
在下面我为对象添加监听器:
private function addListeners(... objects):void
{
for (var i:int = 0; i < objects.length; i++)
{
objects[i].addEventListener(MouseEvent.MOUSE_DOWN, dragObject);
objects[i].addEventListener(MouseEvent.MOUSE_UP, stopDragObject);
}
}
【问题讨论】:
-
你能上传 FLA 文件吗?尝试设置
objects[i].mouseChildren = false; -
为什么需要 FLA 文件,不在乎舞台内有什么。此代码用于通过使用
e.target.name从舞台对象中获取Instance名称,但如何获取由addChild添加的对象名称以获取Item1Field而不是[object Item1]Field。我需要在哪里设置objects[i].mouseChildren = false;以及它的作用? -
什么是
Item1Field?是类还是字符串? -
如果是班级,请使用此代码:
Class(getDefinitionByName(getQualifiedClassName(e.target))) -
它是MovieClip对象,和
Item1一样,所以在属性中它显示Class: Item1Field我会试着解释一下。例如,我在舞台上有 2 个对象:AS Linkage:Item1和Item1Field,玩家需要将Item1拖放到Item1Field。我在 AS 3 中声明它如下:var item1:Item1 = new Item1();和var item1field:Item1Field = new Item1Field();
标签: arrays actionscript-3 flash object events