我试图从对象的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类而没有任何花哨的东西。也许有人在这里可以启发我,谢谢。
答案 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或更多。