我正在創建一個礦工遊戲(那裏有金塊,你必須用鉤子抓住它們)。 我修改了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