【发布时间】:2014-09-28 00:45:58
【问题描述】:
我正在尝试从对象的 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 类的自定义类。
所以当我执行这段代码时,当我将圆圈放到target[0] 或target[0] 时,它会成功输出“target1”和“target2”。
同时当我将圆圈放到testv对象上时,程序将其名称输出为instance#
当我执行这段代码时
trace(testv.name);
它很好地打印“test2”,没有实例#或任何东西。
我不明白这里发生了什么,因为 DragDropBucket 类只扩展了 Sprite 类并且没有什么花哨的。也许这里有人可以启发我,谢谢。
【问题讨论】:
-
你确定 circle.dropTarget 完全是 testv 吗?检查一些关键属性以确保。也许它真的掉到了另一个对象上:例如测试。
标签: actionscript-3 flash