舞台上的MovieClips消失了

时间:2012-01-30 13:46:36

标签: flash actionscript movieclip stage

我正在创造一个矿​​工游戏(那里有金块,你必须用钩子抓住它们)。 我修改了Main类,将所有名为“Gold”的MovieClip(root)子项放在一个Array(boulders [])中,稍后检查碰撞(我设计并在舞台上放置几个“Gold”MovieClip)水平)。当玩家收集所有黄金(当巨石array.length< = 0)然后goToAndStop(nextLevel),再次从舞台获取黄金MovieClips,如果它的名字是==“黄金”然后把它放在巨石[]。 发生了什么: 在第一级(第2帧因为第1帧是预加载器)一切都很好 - 我在舞台上有2个金色MovieClip(在设计模式下),并且所有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);
            }

在这里,我将所有名为“Gold”的孩子添加到boulder数组中并将它们放在舞台上。 然后添加Pod和rod。

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

这是侦听按键并删除巨石的函数,然后如果boulder.length&lt; = 0删除所有侦听器并goToAndStop(nextLevel)并再次调用createLevel()函数再次加载金色MovieClip下一帧。这就是我上面描述的问题。

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();
                }
                }

1 个答案:

答案 0 :(得分:0)

关于全局属性的任何问题的最简单的解决方案

当你在flash中创建一些东西时,首先添加一个空的MovieClip给它一个实例,如游戏或测验,然后双击你的影片剪辑然后让你的项目goback到主时间轴输入你的所有代码,现在你所有的变量什么不容易成为全球性的