Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays AS3:如何从MC';基于e.target?_Arrays_Actionscript 3_Drag And Drop_Addchild_Targets - Fatal编程技术网

Arrays AS3:如何从MC';基于e.target?

Arrays AS3:如何从MC';基于e.target?,arrays,actionscript-3,drag-and-drop,addchild,targets,Arrays,Actionscript 3,Drag And Drop,Addchild,Targets,我有一个8个电影剪辑的数组,可以拖放到一个MC上,这是他们的常用对象 我希望无论哪个mc被拖动,当它被删除时都被添加为hitObject mc的子对象,但是我在设置代码时遇到了麻烦。目前,只有一个特定实例将被添加为hitObject的子对象,因为我不知道除了一个特定实例名之外,在addChild()参数中还要写什么(以下任何一个都是不可接受的:e.target、数组名、MovieClip名) 以下是我的代码--非常感谢您的帮助: import flash.events.MouseEvent; i

我有一个8个电影剪辑的数组,可以拖放到一个MC上,这是他们的常用对象

我希望无论哪个mc被拖动,当它被删除时都被添加为hitObject mc的子对象,但是我在设置代码时遇到了麻烦。目前,只有一个特定实例将被添加为hitObject的子对象,因为我不知道除了一个特定实例名之外,在addChild()参数中还要写什么(以下任何一个都是不可接受的:e.target、数组名、MovieClip名)

以下是我的代码--非常感谢您的帮助:

import flash.events.MouseEvent;
import flash.display.MovieClip;

var redArray:Array = [red,red1,red2,red3,red4,red5,red6,red7];

redArray.forEach(setupDrag);
function setupDrag(dragger:MovieClip, index:int, array:Array):void {
    dragger.addEventListener(MouseEvent.MOUSE_DOWN, dragRed);
    dragger.buttonMode=true;}

redArray.forEach(setupDrop);
function setupDrop(dropper:MovieClip, index:int, array:Array):void {
    dropper.addEventListener(MouseEvent.MOUSE_UP, dropRed);
    dropper.buttonMode=true;}

var dirt:MovieClip

function dragRed(e:Event):void{
        dirt = e.currentTarget as MovieClip;
        e.target.startDrag();
}

function dropRed(e:Event):void{
        e.target.stopDrag();
        if (e.target.hitTestObject(drawer_mc))
        {
        drawer_mc.addChild(red1);
        red1.y=10;
        }
}

提前谢谢

你就快到了。您希望将
target
currentTarget
作为参数传递给
addChild
。我认为下面应该这样做(我刚刚发布了我更新的部分)

对于
target
currentTarget
之间的差异有一个很好的解释


您已经通过事件目标属性访问了删除的对象。将其强制转换为DisplayObject或MovieClip,然后将其传递到addChild()方法:

  • e、 目标是指单击的对象
  • e、 currentTarget引用已应用的对象addEventListener() 对

我修好了。现在会了;)谢谢,非常感谢。我只是不太明白如何使用这个变量,但是e.currentTarget做得很好。谢谢,这正是我需要的!我就是想不起来。我在等待的时候四处闲逛,找到了另一个解决方案,尽管它没有这么干净。我也很感谢你提供的链接。干杯
var dirt:MovieClip;

function dragRed(e:Event):void {
        // sounds like currentTarget and target will both work in your
        // case, but stick to one or the other for consistency
        dirt = e.currentTarget as MovieClip;
        dirt.startDrag();
}

function dropRed(e:Event):void{
        // assigning the currentTarget to your dirt variable means you don't 
        // keep needing to refer to e.currentTarget throughout the function
        dirt = e.currentTarget as MovieClip;
        dirt.stopDrag();
        if (dirt.hitTestObject(drawer_mc)) {
            // now you're always adding the instance that triggered 
            // the mouse up event
            drawer_mc.addChild(dirt);
            dirt.y=10;
        }
}
function dropRed(e:Event):void
{
  var droppedObject:MovieClip = e.currentTarget as MovieClip;
  droppedObject.stopDrag();

  if(droppedObject.hitTestObject(drawer_mc))
  {
    drawer_mc.addChild(droppedObject);
    droppedObject.y=10;
  }
}