簡體   English   中英

動作腳本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名稱。 我已將跟蹤用於測試目的,並且返回以下內容:

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);
    }
}

假設您有兩個這樣的對象:

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
    }
}

希望能對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM