我试图将精灵放在另一个精灵上,并获取掉落目标的名称。当我在我的精灵中使用一个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
。有人可以帮我解决这个问题吗?非常感谢你!
答案 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