动作脚本 3. 如何从 e.target 中获取对象的名称?
Action Script 3. How to get object's name from e.target?
我正在开发拖放游戏。我无法成功获取 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
名称。我已将跟踪用于测试目的,它 returned 如下:
trace(e.target);
OUTPUT: [object Item1]Field
trace(e.target.name);
OUTPUT: instance55Field
trace(e.target.label);
OUTPUT: undefinedField
应该return 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);
}
}
假设你有两个像这样的对象:
var item1:Item1 = new Item1();
item1.name = 'item1';
addChild(item1);
var item1_field:Field = new Field();
item1_field.name = 'item1_Field';
addChild(item1_field);
因此您可以这样做来访问您的 item1_field
(名为 item1_Field
):
private function stopDragObject(e:MouseEvent):void
{
var name:String = e.currentTarget.name + '_' + 'Field';
trace(e.currentTarget.parent[name].name); // gives : item1_Field
trace(e.currentTarget.parent[name]); // gives : [object Field]
if (e.currentTarget.hitTestObject(e.currentTarget.parent[name]))
{
// instructions here
}
}
希望能帮到你。
我正在开发拖放游戏。我无法成功获取 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
名称。我已将跟踪用于测试目的,它 returned 如下:
trace(e.target);
OUTPUT: [object Item1]Field
trace(e.target.name);
OUTPUT: instance55Field
trace(e.target.label);
OUTPUT: undefinedField
应该return 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);
}
}
假设你有两个像这样的对象:
var item1:Item1 = new Item1();
item1.name = 'item1';
addChild(item1);
var item1_field:Field = new Field();
item1_field.name = 'item1_Field';
addChild(item1_field);
因此您可以这样做来访问您的 item1_field
(名为 item1_Field
):
private function stopDragObject(e:MouseEvent):void
{
var name:String = e.currentTarget.name + '_' + 'Field';
trace(e.currentTarget.parent[name].name); // gives : item1_Field
trace(e.currentTarget.parent[name]); // gives : [object Field]
if (e.currentTarget.hitTestObject(e.currentTarget.parent[name]))
{
// instructions here
}
}
希望能帮到你。