删除动作脚本3中的孩子

问题描述

我正在尝试重新启动游戏,但是有几个问题。我正在做一个小行星游戏(基本)。我有以下课程:
GameClass
Ship
Enemy
。 在ѭ0within中创建
Enemy
Ship
。在
DocumentClass
(这是主类)中创建了
GameClass
。 当游戏开始时,我开始游戏,例如
var something:GameClass = new GameClass(); 
addChild(something); 
游戏进行应有的方式。当我尝试删除对象时,什么也没有发生..我这样做:
something = null
removeChild(something);
都不起作用。为什么?我究竟做错了什么?     

解决方法

        在不发布更多代码的情况下,确切地说明问题的内容是有些棘手的。但是,执行removeChild(something)似乎是在正确的轨道上。我猜想当您叫
removeChild(something)
\“某物\”超出范围时。也许尝试将\“某物\”设为DocumentClass中的私有变量     ,        在动作脚本中,删除仅是删除引用。因此,我建议您删除包含要更新内容的整个舞台(或movieClip)以及您的gameClass(),然后重新创建它。     ,        我的猜测是您不小心创建了GameClass的多个实例。您是否尝试遍历DocumentClass的所有子级? 从DocumentClass尝试一下:
for( var i:int = 0; i < numChildren; i++ )
{
    trace( getChildAt( i ) ); 
    // or removeChild( getChildAt( i ) ) to simply get rid of them.
}
如果您使用的是CS3-5,我个人注意到“自动声明舞台实例”引起的一些非常奇怪的行为。您可能想看看如果关闭它会发生什么。     ,        拉出var,这样您就可以在整个文档类中对其进行访问。 像这样。
package src
{
    import flash.display.Sprite;
    import flash.events.Event;

    public class DocumentClass extends Sprite
    {
        // You will have access to this var any place in this class.
        private var game:GameClass;

        public function DocumentClass()
        {
            addEventListener(Event.ADDED_TO_STAGE,initDocumentClass);
        }

        private function initDocumentClass(e:Event):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE,initDocumentClass);

            game = new GameClass();
            addChild(game);


            // Now whenever you want to reset your game you can do a few things
            // the easiest would be
            removeChild(game);
            game = new GameClass();
            addChild(game);
        }
    }
}
这也将使您可以通过菜单系统等轻松访问。 有任何疑问,或者我是否完全想念您的意思。只是问问。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...