AS3实例自定义类的名称

时间:2014-08-05 11:11:59

标签: actionscript-3 flash

我试图从对象的dropTarget中获取实例名称。

import flash.display.Sprite;
import flash.events.MouseEvent;
import com.components.DragDropBucket;

var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFFCC00);
circle.graphics.drawCircle(0, 0, 40);
var target:Array = new Array();

target[0] = new Sprite();
target[0].graphics.beginFill(0xCCFF00);
target[0].graphics.drawRect(0, 0, 100, 100);
target[0].name = "target1";

target[1] = new Sprite();
target[1].graphics.beginFill(0xCCFF00);
target[1].graphics.drawRect(0, 200, 100, 100);
target[1].name = "target2";

var testv:DragDropBucket = new DragDropBucket("test", 500, 500, 175, 40,false);
testv.name ="test2";
var test:DragDropBucket = new DragDropBucket("test", 0, 0, 175, 40,true);

addChild(target[0]);
addChild(target[1]);
addChild(circle);

addChild(testv);
addChild(test);


circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) 

function mouseDown(event:MouseEvent):void {
    circle.startDrag();
}
circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);

function mouseReleased(event:MouseEvent):void {
    circle.stopDrag();
    trace(circle.dropTarget.name);
}

DragDropBucket是一个扩展Sprite Class的自定义类。

因此,当我执行此代码时,当我将圆圈放到target[0]target[0]时,它会成功输出" target1"和" target2"。

同时当我将圆圈放到testv对象时,程序将其名称输出为实例#

然而,当我执行此代码时

trace(testv.name);

它打印" test2"好吧,没有实例#或任何东西。

我不明白这里发生了什么,因为DragDropBucket类只扩展了Sprite类而没有任何花哨的东西。也许有人在这里可以启发我,谢谢。

1 个答案:

答案 0 :(得分:0)

您的DragDropBucket类与库类没有区别。这是相同的逻辑。您的DragDropBucket类实例包含在&test;' testv'中的对象被检测为dropTarget

function mouseReleased(event:MouseEvent):void {
    circle.stopDrag();
    trace(circle.dropTarget.name, circle.dropTarget.parent.name);
    // output : instance1, test2
}

如果' test2'不是' instance1'的父级,它的parent.parent或更多。