我什至不确定标题是否反映了我想要做的事情。这是背景故事。我有一个包含 5 个“持有人”电影剪辑的电影剪辑。它们是我动态添加的影片剪辑的容器。
父容器的实例名称为金字塔,容器实例名称标注在 6 个食物组之后,即“grainholder”、“fruitholder”、“vegetableholder”等...
持有者在金字塔容器内,实例名称如上,金字塔容器被添加到显示列表中。我有一个 addFoodToPyramid() 函数,它将“foodMC”mc 添加到它们各自的持有者中。因此,将通过 pyramid.fruitholder.addChild(Apple) 动态添加一个 [object Apple]。该函数还添加了一个侦听器。下面是调用和函数:
调用(我将以谷物为例)是这样的:
addFoodToPyramid(grainArray, grainHolder, grainCounter);
功能是:
函数 addFoodToPyramid(thisArray:Array, thisHolder:MovieClip, thisCounter:Number):void {
thisCounter = 0;
for (var f:Number=0; f<thisArray.length; f++)
{
trace(thisArray.length);
foodMC = (thisArray[f] as MovieClip);
trace(foodMC);
thisHolder.addChild(foodMC);
foodMC.addEventListener(MouseEvent.MOUSE_DOWN, startFoodDrag, false, 0, true);
thisMC.scaleX = thisMC.scaleY = .7;
thisMC.x = 60 * thisCounter;
thisCounter++;
}
}
然后我有一个 startDrag 函数:
function startFoodDrag(e:MouseEvent):void
{ foodDrag = e.target 作为电影剪辑;foodDrag.startDrag(); foodPoint = new Point(foodDrag.x,foodDrag.y); stage.addEventListener(MouseEvent.MOUSE_UP, stopFoodDrag, false, 0, true); }
那么 drop 函数和问题就在这里:
foodDrag = foodDrop;
stage.addEventListener(MouseEvent.MOUSE_UP, stopFoodDrag);
if(foodDrag.dropTarget.parent==myPlate){
//这里有问题 removeChild(foodDrag); //显然返回错误,因为 foodDrag 引用错误
}
好的,显然引用不是直接的 removeChild() 而是特定的路径。喜欢:
pyramid.*THE-HOLDER-OF-foodDRAG*.removeChild(foodDrag).
但我就是不知道该怎么做。我试过了:
var mcParent:MovieClip=(foodDroppedMC.parent);
pyramid.mcParent.removeChild(foodDroppedMC);
// 返回错误 1118 隐式强制
我试过了:
var mcParent:String=(foodDroppedMC.parent.name);
pyramid.getChildByName(mcParent).removeChild(foodDroppedMC);
// 返回 1061 调用可能未定义的方法 removeChild 引用静态类型等
这是一个如此平庸的问题,这让它如此令人沮丧......
任何帮助,将不胜感激。谢谢