Я даже не уверен, отражает ли заголовок то, что я хочу сделать. Вот предыстория. У меня есть мувиклип с 5 клипами «Держатель». Это мои контейнеры для динамически добавляемых видеоклипов.
У родительских контейнеров есть имя экземпляра пирамиды, имена экземпляров держателя помечены после 6 групп продуктов, т. Е. «Держатель зерна», «фруктодержатель», «держатель овощей» и т. Д. И т. Д.
Держатели находятся в контейнере пирамиды, имена экземпляров как выше, и контейнер пирамиды добавляется в список отображения. У меня есть функция addFoodToPyramid (), которая добавляет mc 'foodMC' к соответствующим держателям. Таким образом, [объект Apple] будет динамически добавляться с помощью pyramid.fruitholder.addChild (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 as MovieClip;
foodDrag.startDrag ();
foodPoint = новая точка (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);
// возвращаем 1061 Вызов возможно неопределенного метода removeChild со ссылкой на статический тип и т. Д. И т. Д.
Тот факт, что это такая банальная проблема, делает ее такой расстраивающей ...
Любая помощь будет принята с благодарностью. Спасибо