如何解决删除动作脚本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);
}
}
}
这也将使您可以通过菜单系统等轻松访问。
有任何疑问,或者我是否完全想念您的意思。只是问问。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。