as3 dropTarget返回实例而不是名称

时间:2018-02-22 16:20:06

标签: actionscript

我试图将精灵放在另一个精灵上,并获取掉落目标的名称。当我在我的精灵中使用一个loder时,结果不是精灵的名字,而是他的实例编号。我将在下面发布代码并希望有人可以帮助我。非常感谢!

FileOperations

当您将package { import flash.display.*; import flash.net.URLRequest; import flash.net.URLLoader; import flash.events.MouseEvent; public class dragAndDrop extends MovieClip { public function dragAndDrop() { // constructor code var imagineDrag:Sprite = new Sprite; imagineDrag.x = 150; imagineDrag.y = 150; var fundalLoader:Loader = new Loader(); var fundalLoaderURL:URLRequest = new URLRequest("butStartActiv.png"); fundalLoader.load(fundalLoaderURL); imagineDrag.addChild(fundalLoader); imagineDrag.name = "Tinta"; addChild(imagineDrag); var target1:Sprite = new Sprite(); target1.graphics.beginFill(0xCCFF00); target1.graphics.drawRect(265, 100, 125, 125); target1.name = "casuta1"; addChild(target1); var imagineDeTras:Sprite = new Sprite; imagineDeTras.x = 10; imagineDeTras.y = 10; var fundalLoader2:Loader = new Loader(); var fundalLoaderURL2:URLRequest = new URLRequest("butStartInactiv.png"); fundalLoader2.load(fundalLoaderURL2); imagineDeTras.addChild(fundalLoader2); addChild(imagineDeTras); imagineDeTras.addEventListener(MouseEvent.MOUSE_DOWN, dragObject); imagineDeTras.addEventListener(MouseEvent.MOUSE_UP, stopDragObject); imagineDeTras.buttonMode = true; imagineDeTras.useHandCursor = true; imagineDeTras.mouseChildren = false; function dragObject(evt:MouseEvent):void { evt.currentTarget.startDrag(); trace("nume : " + evt.currentTarget.name) }///// end drag object function stopDragObject(evt:MouseEvent):void { //trace("e.target.name " + e.target.name); trace("tinta atinsa este: " + evt.target.dropTarget.name); evt.target.stopDrag(); }//// end function stop drag }/// end constructor }// end class } 拖放到imagineDeTras时,答案是“casuta1” 当我将target1拖放到imagineDeTras而不是“Tinta”时,答案为imagineDrag。有人可以帮我解决这个问题吗?非常感谢你!

1 个答案:

答案 0 :(得分:0)

问题是代码上的一个小错误! 在你写的dragObject函数上:

tf.variable_scope

这是正确的,但你忘了在stopDragObject上使用 currentTarget 而不是 target

trace("nume : " + evt.**currentTarget**.name)

您必须将目标替换为 currentTarget ,以使其跟踪您向其添加侦听器的项目的名称,而不是其名称为mouse_up事件的子项触发了。

此外,您必须在curretlntTarget

之后删除“dropTarge”

如果您在理解目标和currentTarget时遇到问题:AS3: Difference between target vs currentTarget