2012-09-03 45 views
0

我有这个收集物品游戏,你必须收集足够的“星星”才能使用按钮。点击“星号”按钮后,它会消失并且再也不会出现。但是,当使用这个脚本时,尽管按钮一旦点击就会消失,当我在转到另一个框架后返回框架时,它再次出现!请帮忙!只能在Flash动作脚本中使用的按钮3.0

star1.addEventListener(MouseEvent.CLICK,gotstar); 

    function gotstar(event:MouseEvent){ 
stars++; 
star1.x = -500; 
} 
+0

,因为使用时间线的时候,如果你有一个具有该项目关键帧,它将在播放头到达该关键帧时再次创建。 – BadFeelingAboutThis

回答

1

如果我明白你需要将它从舞台上移除。

试试这个,而不是star1.x = -500;

stage.removeChild(star1);

3

你是在自己的框架上编码吗?如果是这样,每次你输入一个框架,它都会运行每一个包含的代码,即使它已经运行过一次。解决这个问题的方法是使用文档类来跟踪游戏的进度。

+0

这是否意味着当您使用MovieClip上的帧时,Flash会在每次MC到达该帧时从头开始重新创建帧?好东西,我坚持使用“我”希望他们做的“精灵”,并且没有任何隐含的奇怪行为。 – Vesper

+1

基本上是的。每次输入框架时,框架上的任何代码都会执行,这意味着所有声明的变量都会重新初始化。一个好的解决方案是将这个代码应用到整个电影/游戏中,并将它放在一个动作文件(.as)文件中的一个类中 - 它看起来似乎要复杂得多,但一旦你超过了最初的颠簸它使您的代码完全分离,并让您对它有更多的控制权。这是我用来学习基础知识的非常好的教程:http://gamedev.michaeljameswilliams.com/2008/09/17/avoider-game-tutorial-1/ –

+0

因为我已经通过代码控制了所有内容,所以没有我会打扰编写时间表代码。尽管如此,这是关于调试其他人的时间线代码的一大块信息。谢谢。 – Vesper

0

star1.removeEventListener(MouseEvent.CLICK,gotstar); star1.parent.removeChild(star1);单击处理程序代码(gotstar
应该帮助
但可以发布您的.fla文件可能是为了更好的理解有用