动作脚本 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
    }
}

希望能帮到你。