我甚至不确定标题是否反映了我想要做的事情。这是背景故事。我有一个动画片段,里面有5个'持有者'的动画片段。它们是我动态添加动画片段的容器。
父容器的实例名称为金字塔,持有者实例名称标记在6个食品组之后,即“grainholder”,“fruitholder”,“vegetableholder”等等......
持有人在金字塔容器内,实例名称如上,金字塔容器被添加到显示列表中。我有一个addFoodToPyramid()函数,它将'foodMC'mc添加到他们各自的持有者。因此,[对象Apple]将通过pyramid.fruitholder.addChild(Apple)动态添加。该函数还添加了一个监听器。继承人的电话和功能:
电话会议(我将以谷物为例)是这样的:
addFoodToPyramid(grainArray, grainHolder, grainCounter);
功能是:
function 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为MovieClip; foodDrag.startDrag(); foodPoint = new Point(foodDrag.x,foodDrag.y); stage.addEventListener(MouseEvent.MOUSE_UP,stopFoodDrag,false,0,true); }
然后放下功能和问题就在这里:
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);
// return 1061调用可能未定义的方法removeChild with ref to static type etc etc
事实上,这是一个平庸的问题是让它如此令人沮丧的原因......
任何帮助将不胜感激。感谢
答案 0 :(得分:0)
关于你的问题的细节,我有点麻烦(我想也许某些“丢弃功能”在你的帖子中丢失了)。
但如果问题是:如何在不知道父母的确切路径的情况下从父母中删除影片剪辑?那么答案很简单:
foodDrag.parent.removeChild(foodDrag);
假设foodDrag
是您要删除的影片剪辑。
如果我错过了这一点,请回复并帮助我了解您的要求。
答案 1 :(得分:0)
试过这个和它的工作!!!:
var mcParent:String=(foodDroppedMC.parent.name);
pyramid[mcParent].removeChild(foodDroppedMC);
如果有人能够就如何运作提供一些见解,我很乐意知道。我假设类型为“String”的mcParent使(foodDroppedMC.parent.name)成为一个字符串,并且mc路径中的[]括号以某种方式将其作为MC投射,因此没有隐式强制。那是我的猜测......哈哈。
无论如何,快乐的日子。随意扩展此解决方案。我不太确定谷歌大学(我获得我的Flash as3学位= P)教授了很多关于除了数组之外的[]的使用。