AS3 DropTarget返回实例而不是名称



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

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
}

当您在target1上拖放imagineDeTras时,答案是" Casuta1"当我在imagineDrag上拖放imagineDeTras时,答案是instance126。有人可以帮我解决这个问题吗?非常感谢!

问题是您代码上的一个小错误!在DragObject函数上,您写了:

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

是正确的,但是您忘记使用 CurrentTarget 而不是 target 在stopdragobject上!

trace("tinta atinsa este: " + evt.**target**.dropTarget.name);

您必须用 target currentTarget 使其跟踪您添加侦听器的项目名称触发。

也必须在curretlnttarget之后删除" droptarge"

,如果您在理解目标和CurrentTarget上有问题,则可以看到这一点:AS3:目标与CurrentTarget之间的差异

最新更新