我试图将一个精灵放在另一个精灵上,并获取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之间的差异