Я изучаю AS3 для проекта класса всего лишь несколько месяцев, большинство из того, что я знаю, смотря на то, как здесь решались другие проблемы.Удалить Ребенок, созданный классом as3
К пункту.
У меня есть класс под названием Generate, поэтому я импортирую его на свою основную шкалу времени, в этом классе он создает дочерний элемент и добавляет его.
Теперь я не могу понять, как его удалить, он всегда говорит, что он имеет значение null: «TypeError: Error # 2007: параметр child должен быть не нулевым».
package {
import MonsterOne;
import MonsterTwo;
import MonsterThree;
import MonsterFour;
import flash.display.*;
public class Generate extends MovieClip{
public static var monsterID = String(monsterID);
monsterID = Math.ceil(Math.random() * 4).toString();
public function Generate(parent:Object){
if (monsterID == 1){
var monsOne:MonsterOne = new MonsterOne();
monsOne.name = "monsterOne";
parent.addChild(monsOne);
monsOne.x = 100;
monsOne.y = 200;
trace("spawn1");
}
Вот как это происходит. Существует немного больше кода для monsTwo, три и четыре. Тот же код отличается от других. Это все, что есть в файле.
Я пробовал все виды, чтобы удалить код, но всегда с ошибкой и фактическим удалением ребенка.
stage.removeChild(monsOne);
monsOne.parent.removeChild(monsOne);
removeChild(monsOne);
И кто знает, сколько еще.
Я что-то упускаю или просто делаю это совершенно неправильно.
Спасибо
--EDIT--
if(o.monHP <= 0) {
turnTimer.stop();
turnTimer.removeEventListener(TimerEvent.TIMER, CounterA);
var monsOne:MovieClip = getChildByName('monsterOne') as MovieClip;
var monsTwo:MovieClip = getChildByName('monsterTwo') as MovieClip;
var monsThree:MovieClip = getChildByName('monsterThree') as MovieClip;
var monsFour:MovieClip = getChildByName('monsterFour') as MovieClip;
parent.removeChild(monsOne);
parent.removeChild(monsTwo);
parent.removeChild(monsThree);
parent.removeChild(monsFour);
gotoAndStop('win');
}
Как я пытаюсь удалить ребенка.
package {
import MonsterOne;
import MonsterTwo;
import MonsterThree;
import MonsterFour;
import flash.display.*;
public class Generate extends MovieClip{
public static var monsterID = String(monsterID);
monsterID = Math.ceil(Math.random() * 4).toString();
public function Generate(parent:Object){
if (monsterID == 1){
var monsOne:MonsterOne = new MonsterOne();
monsOne.name = "monsterOne";
parent.addChild(monsOne);
monsOne.x = 100;
monsOne.y = 200;
trace("spawn1");
}
if (monsterID == 2){
var monsTwo:MonsterTwo = new MonsterTwo();
monsTwo.name = "monsterTwo";
parent.addChild(monsTwo);
monsTwo.x = 100;
monsTwo.y = 200;
trace("spawn2");
}
if (monsterID == 3){
var monsThree:MonsterThree = new MonsterThree();
monsThree.name = "monsterThree";
parent.addChild(monsThree);
monsThree.x = 100;
monsThree.y = 200;
trace("spawn3");
}
if (monsterID == 4){
var monsFour:MonsterFour = new MonsterFour();
monsFour.name = "monsterFour";
parent.addChild(monsFour);
monsFour.x = 100;
monsFour.y = 200;
trace("spawn4");
}
}
}
} Полный Сформировать файл
Вы можете использовать, например, ['getChildByName()'] (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html#getChildByName()) чтобы получить ваш объект, вы можете удалить его ... – akmozo
Чтобы удалить 'monsOne', используйте' parent.removeChild (monsOne); ' – subdan
@akmozo Я пробовал, что все еще получаю ошибку # 2007. Я использовал (http://stackoverflow.com/questions/24040609/action-script-3-how-to-remove-child-which-is-created-from-another-function). Спасибо хоть. Любые другие идеи? –