我有一个类 Catcher,它可以让你控制游戏中的电影剪辑。我正在尝试对游戏进行编程,以便它完成并且您可以重新启动。所以我需要删除所有内容并返回菜单。应该是一件容易解决的事情,但我似乎不知道如何解决。
到目前为止,我只有 ourCatcher.parent.removeChild(ourCatcher); 从舞台上删除我的电影剪辑。还有一个 if 语句来停止将东西放到舞台上的功能之一。SoundMixer.stopAll(); 停止音乐。然后我让它进入第 3 帧,即游戏结束屏幕。
它看起来不错,但我在错误控制台中不断出现 1009 错误,当我重新启动游戏时,它非常慢。Catcher 中的移动功能似乎仍在运行并产生错误,因为 Catcher 已从舞台上移除并且现在为空。
我知道我需要取消引用与 Catcher 相关的所有内容,但在我的情况下我无法在网上找到任何文档来执行此操作。每个人似乎都有不同的方法,我尝试过但不起作用。
我用来移动角色的 Catcher 类中的两个函数:
public function Catcher(stageRef:Stage)
{
stop();
this.stageRef = stageRef;
key = new KeyObject(stageRef);
addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
}
//movement
public function loop(e:Event):void
{
if (key.isDown(Keyboard.A))
vx -= walkSpeed;
else if (key.isDown(Keyboard.D))
vx += walkSpeed;
else
vx *= friction;
//update position
x += vx;
//speed adjustment
if (vx > maxspeed)
vx = maxspeed;
else if (vx < -maxspeed)
vx = -maxspeed;
//stay inside screen
if (x > stageRef.stageWidth)
{
x = stageRef.stageWidth;
vx = -vx
}
else if (x < 0)
{
x = 0;
vx = -vx;
}
if (key.isDown(Keyboard.A))
{
scaleX = -1;
}
else if (key.isDown(Keyboard.D))
{
scaleX = 1;
}
movement();
// Jumping
jump += gravity;
if (y > stage.stageHeight /1.5)
{
jump = 0;
canJump = true;
}
if (key.isDown(Keyboard.SPACE) && canJump)
{
jump = -10;
canJump = false;
}
y += jump;
}
我要从舞台上移除东西的另一个类称为 CatchingGame ,它有一个丢弃对象的功能,我将游戏放在代码那里当 playerlives == 0 。
if (playerLives == 0 )
{
stop();
ourCatcher.parent.removeChild(ourCatcher);
SoundMixer.stopAll();
gotoAndStop(3);
}
我可能犯了一个基本错误,因为这是我的第一个 Flash 游戏。非常感谢任何帮助,因为这几乎是完成我的游戏的最后一步。