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();
}