У меня проблема, потому что я пытаюсь удалить любые экземпляры прямоугольника, в то время как сообщение Congratulations находится на экране. Код немного грязный, но я много раз общался с ним, чтобы попытаться понять это. Если я изменю addChild
на stage.addChild
, это даст мне ошибки из-за стрельбы и их удаления в функции shootMob
. Я также назвал его rectangle.parent.removeChild(rectange)
, но это также не сработает. Есть идеи?RemoveChild Not Working AS3 Flash
function spawnMob1():void
{
if (gameLevel==1)
{
var rectangle:MovieClip = new ball_mc();
rectangle.x = randomRange(583);
rectangle.y = randomRange(100);
addChild(rectangle);
var mobMoveX:Tween = new Tween(rectangle, "x", None.easeOut, rectangle.x, character_mc.x, 6, true);
var mobMoveY:Tween = new Tween(rectangle, "y", None.easeOut, rectangle.y, character_mc.y, 6, true);
rectangle.visible = true;
rectangle.addEventListener(MouseEvent.CLICK, shootMob);
function shootMob(e:MouseEvent): void
{
if (contains(rectangle))
{
removeChild(rectangle);
score_txt.text = String(score);
}
score+=20;
trace("Score:" + score);
}
if (score>=60)
{
trace("Congratulations!");
congratulations1_mc.visible = true;
trace("GameLevel:" + gameLevel);
removeChild(rectangle);
// rectangle.visible = false;
gameLevel = 0;
}
character_mc.addEventListener(Event.ENTER_FRAME, charHit);
function charHit(event:Event): void
{
if (rectangle.hitTestObject(character_mc))
{
if (contains(rectangle))
{
removeChild(rectangle);
if (health>0)
{
health-=5;
health_txt.text = String(health);
trace("boop");
trace("Health:" + health);
} else if (health<=0) {
trace("You have died");
death_mc.visible = true;
gameLevel=0;
}
}
}
}
Возможно, проблема с областью действия, как вы используете локальные функции; если нет опечатки в том, что вы указали. Я бы не ссылался на экземпляр «rectangle» из обработчика события мыши - вы полагаетесь на устаревшую ссылку из вашей функции внутри функции. –