我正在创建一个矿工游戏(那里有金块,你必须用钩子抓住它们)。 我修改了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();
}
}
如果有人可以帮助我,我会非常感谢:-)谢谢。
我的想法发生这种情况导致MovieClip(根)儿童不会被删除,如果在帧2有3个动画片段与名称“黄金”,并在第3帧中有5个名为“黄金”的影片剪辑,只显示两个影片剪辑导致其他3仍存在。我试试这个:MovieClip(root).removeChild(boulder);在removeBoulder函数中,但它不起作用。 – Mariyan 2012-01-30 14:58:47
好的我找到了解决方案:-)我在每个关键帧(关卡帧)之间留下了一个空白的关键帧。那是有效的。现在我的nextLevel var每次增加2次,而不是增加一次。 – Mariyan 2012-01-30 15:44:05