Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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
Actionscript 3 删除单击的对象_Actionscript 3 - Fatal编程技术网

Actionscript 3 删除单击的对象

Actionscript 3 删除单击的对象,actionscript-3,Actionscript 3,我试图删除正在单击的数组对象,并将它们添加到另一个数组中,以便在其他位置显示它们。我发布了当前代码 我认为问题可能出在.currentTarget上。我尝试将.currentTarget替换为.target,但函数没有通过这一行:if(socket\u Array[I]==in\u event.target)(在这个版本中,我只是在尝试将其更改为.target时说它是.currentTarget) 我得到的错误是: TypeError: Error #1034: Type Coercion fa

我试图删除正在单击的数组对象,并将它们添加到另一个数组中,以便在其他位置显示它们。我发布了当前代码

我认为问题可能出在
.currentTarget
上。我尝试将.currentTarget替换为.target,但函数没有通过这一行:
if(socket\u Array[I]==in\u event.target)
(在这个版本中,我只是在尝试将其更改为.target时说它是.currentTarget)

我得到的错误是:

TypeError: Error #1034: Type Coercion failed: cannot convert []@2c2a8f11 to flash.display.DisplayObject.
创建对象的函数:

function createSockets():void
{
       var socket_one:socket = new socket ();
       var socket_two: socketyellow = new socketyellow ();
       var socket_three: socketdarkorange = new socketdarkorange ();
       var socket_four: socketlightgreen= new socketlightgreen ();
       var socket_five: socketpurple = new socketpurple ();
       var socket_six: socketdarkgreen = new socketdarkgreen ();

       socket_Array.push(socket_one, socket_two,socket_three, socket_four, socket_five, socket_six);

       for (var i:int=0; i<socket_Array.length; i++)
       {
               addChild(socket_Array[i]);
               socket_Array [i].x = socket_x_position;
               socket_Array [i].y = socket_y_position;
               socket_Array[i].addEventListener(MouseEvent.MOUSE_DOWN, removeItemOnClick);
       }
                temp_update ();
}
函数createSockets():void
{
var socket_one:socket=newsocket();
var socket_two:socketyellow=newsocketyellow();
var socket_three:socketdarkorange=new socketdarkorange();
var socket_four:socketlightgreen=new socketlightgreen();
var socket_five:socketpurple=new socketpurple();
var socket_six:socketdarkgreen=new socketdarkgreen();
插座阵列。推动(插座一、插座二、插座三、插座四、插座五、插座六);

对于(var i:int=0;i,错误表明这似乎是类型强制的问题

尝试用以下内容替换if语句的条件:

    if (DisplayObject(socket_Array[i]) == DisplayObject(in_event.currentTarget))

如果这不起作用,您可能会在调试时获得更多信息,首先将要比较的两个对象存储到临时变量中,.currentTarget是正确的

其次,调用removeChild()然后再调用addChild()是没有意义的。两个调用的净效果都是零

第二个函数中的几乎所有代码都是不必要的。下面是一个较短的版本:

function removeItemOnClick(in_event:MouseEvent):void {
    var index:int = socket_Array.indexOf(in_event.currentTarget);
    var drop:Sprite = socket_Array.splice(index,1) as Sprite;
    removedItem.push(drop);
    updateDisplay();
    choice_updateDisplay();
}

如果您想在其他地方显示新项目,只需更改drop.x和drop.y.

如果我这样做,我会遇到一个问题,首先是不删除对象不会完全消失,第一个项目可以正常工作,但是出现故障后的项目。我试过代码,它可以正常工作。谢谢。但是,您能告诉我如何让他们更改项目吗正确地说,我现在就这么做了,但它不起作用
function removeItemOnClick(in_event:MouseEvent):void {
    var index:int = socket_Array.indexOf(in_event.currentTarget);
    var drop:Sprite = socket_Array.splice(index,1) as Sprite;
    removedItem.push(drop);
    updateDisplay();
    choice_updateDisplay();
}