2012-01-30 54 views
0

我正在创建一个矿工游戏(那里有金块,你必须用钩子抓住它们)。 我修改了Main类,让名为“Gold”的MovieClip(root)的所有孩子将它们放入Array(boulders [])中,稍后检查碰撞(我设计并放置了几个“Gold”MovieClips for每个级别)。当玩家收集所有金币(当巨石阵列长度为< = 0时),然后goToAndStop(nextLevel),再次从场景中获取黄金级的MovieClip,如果它的名字是==“Gold”,那么把它放在巨石[ ]。 发生了什么: 在第一层(第2帧导致第1帧是预加载器)一切都很好 - 我在舞台上(设计模式)有2个黄金影片剪辑,并且所有2个黄金都放入阵列并显示出来。 在第二级我有4金,只有他们2放入阵列并显示。 在第三级,我有7个金牌在舞台上设计,但只有3个显示并放在巨石阵中。 这几乎是前一帧的黄金数量(从前一帧)减去下一帧黄金影片的数量。 有人有什么想法吗?舞台上的电影片段消失

我放置Main.as代码:

public function createLevel(){ 
       nextLevel = this.currentFrame + 1; 
       for (var i:uint = 0; i < MovieClip(root).numChildren; i++){ 
       if(MovieClip(root).getChildAt(i).name=="Gold") 
       { 
        this.addChild(MovieClip(root).getChildAt(i)); 
        boulders.push(MovieClip(root).getChildAt(i)); 
       } 
       } 
       placePod(); 
       stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPress); 
       stage.addEventListener(KeyboardEvent.KEY_UP, onKeyRelease); 
       addEventListener(Event.ENTER_FRAME, updateStatus); 
      } 

在这里,我添加名称为“金”所有的孩子在巨石阵,把他们在舞台上。 然后添加Pod和杆。

private function placePod():void { 
       pod = new Pod(); 
       addChild(pod); 
       pod.createRod(); 
      } 

这里是监听按键和删除巨石功能,那么如果boulder.length < = 0删除所有的听众和goToAndStop(nextLevel),并再次调用createLevel()函数再次加载金下一帧的动画片段。这就是我上面描述的问题。

private function updateStatus(e:Event):void { 
       if (!left && !right) { 
        pod.setSpeed(0); 
       } else if (left && right) { 
        pod.setSpeed(0); 
       } else if (left) { 
        pod.setSpeed(-4); 
       } else { 
        pod.setSpeed(4); 
       } 

       for (var i in boulders) { 
        boulders[i].updateStatus(); 
        if (boulders[i].remove) { 
         removeBoulder(boulders[i]); 
         boulders.splice(i, 1); 
        } 
       } 
      if(boulders.length <= 0) 
      { 
       pod.removeRod(); 
       removeChild(pod); 


    stage.removeEventListener(KeyboardEvent.KEY_DOWN,onKeyPress); 
    stage.removeEventListener(KeyboardEvent.KEY_UP,onKeyRelease); 
        removeEventListener(Event.ENTER_FRAME, updateStatus); 
        MovieClip(root).gotoAndStop(nextLevel); 
        createLevel(); 
       } 
       } 

如果有人可以帮助我,我会非常感谢:-)谢谢。

+0

我的想法发生这种情况导致MovieClip(根)儿童不会被删除,如果在帧2有3个动画片段与名称“黄金”,并在第3帧中有5个名为“黄金”的影片剪辑,只显示两个影片剪辑导致其他3仍存在。我试试这个:MovieClip(root).removeChild(boulder);在removeBoulder函数中,但它不起作用。 – Mariyan 2012-01-30 14:58:47

+0

好的我找到了解决方案:-)我在每个关键帧(关卡帧)之间留下了一个空白的关键帧。那是有效的。现在我的nextLevel var每次增加2次,而不是增加一次。 – Mariyan 2012-01-30 15:44:05

回答

0

到有关全球性

当您创建闪光的东西

任何问题,最简单的解决首先添加的空MovieClip给它的一个实例,如游戏或测验比双击进入你的电影剪辑,然后让你的项目GoBack的到主要的时间线键入所有的代码,现在所有的变量,什么不能轻松全球