2016-12-06 15 views
-1

我很驚訝我不知道如何做到這一點,但事實證明,我真的沒有;簡單地說,我試圖製作一個側面滾動的射擊遊戲,一個基本的遊戲,在遊戲開始時,我通過一個「for」循環在屏幕上產生了50顆星。有一個功能是這樣做的,一個聽衆是在開始。問題是,當你失去遊戲並回到主菜單時,會產生50多顆星星,這不是我想要的。因此,我試圖在開始時進行「if」語句檢查,以便遊戲在確定是否應該使用星號對象/符號的實例/影片剪輯進行調用之前,檢查是否存在星形對象/符號的實例/影片剪輯一個聽衆。那麼,我該怎麼做?我查看了其他一些檢查,他們沒有幫助,因爲所提供的代碼在那裏大不相同,所以我只是得到錯誤。檢查一個對象實例的存在

讓我知道是否需要更好的解釋,或者如果你想看到一些代碼。請注意,整個遊戲已經有很多代碼,所以只是給出所有的代碼可能沒有幫助。

+1

正確的。提供所有這些都不會有幫助。我們建議您製作一個儘可能簡單的例子來解決相同的問題。經常這樣做,你會發現自己的解決方案,但如果沒有,它給了我們一個很好的方式來看到你的問題在我們自己的計算機上的行動。 –

回答

1

我建議你重新考慮你的方法。你關注的是星星是否已經實例化。沒關係,但不是考慮它的最基本的方式。

我會做到這一點,而不是

private function setup():void{ 
    loadLevel(1); 
    addListeners(); 
    loadMusic(); 
    // etc... 
    // call all functions that are needed to just get the app up and running 
} 

private function loadLevel(lev:int):void{ 
    addStars(); 
    // call all functions that are needed each time a new level is loaded 
} 

private function restartLevel():void{ 
    // logic for restarting level, 
    // but this *won't* include adding star 
    // because they are already added 
} 

還有其他的方法可以做到這一點,但這樣更有意義,我不是你的方法。我總是把我的遊戲功能分解成更小的邏輯,以便更輕鬆地重用它們。你的主要主力功能應該(恕我直言)主要(如果不是唯一的話)只是調用其他功能。然後這些功能完成這項工作。通過這樣做,您可以通過彙編所有適用的較小函數來製作像resetLevel這樣的函數,但不包括有關添加星號的部分。

+0

嗯,我已經寫了很多代碼,我想到的方法是我很確定會工作的一種方法。我不打算重寫長達數週的代碼,只是爲了讓這個唯美的東西能夠工作,當我只有一個星期的時間來完成這個小遊戲並將其作爲一項任務交付時。所以,請問,在我需要什麼代碼的幫助下,我可以在程序的一開始就檢查星形容器(容器的名稱爲starContainer btw)中是否存在一顆恆星,以便我可以確定它是否存在在星星中產卵或不星。 – XirmiX

+0

儘管我仍然不知道如何執行我在這裏要求的支票,但我已經想出了一種方法來獲得我需要的東西;通過將聽衆設置在遊戲開始功能之外,簡單地讓星星產生一次。但是,對於未來的目標來說,一個代碼會很好,所以如果任何人都可以提供一些代碼,那就太棒了。 – XirmiX

+0

這正是我所說的。或多或少的 –

0

當你說所有腦幹,所以有一個容器,我命名這個容器,(包含恆星和恆星它添加)作爲starsRoot,這絕對是一個DisplayObject(右?)

現在,以檢查DisplayObject的整個兒童,我們不得不這樣做:

for (var i:int=0; i<starsRoot.numChildren; i++) { 
    var child = starsRoot.getChildAt[i]; 
} 

那麼,如何檢查如果發現孩子真的是明星!? 如你所說

是否有明星

所以你的明星的類型是影片剪輯實例/影片剪輯,他們沒有任何標識(名稱),因此如何找到它們並從其他現有的動畫片段中清除它們。我的建議:

從圖書館恆星定義聯動的名字,那是一類的名稱,並應以大寫字母開始,例如Stars

enter image description here

現在,回代碼,這次我們可以檢查孩子是否是一個實例Stars

for (var i:int=0; i<starsRoot.numChildren; i++) { 
    var child = starsRoot.getChildAt[i]; 
    if (child is Stars) { 
     // test passed, star exist 
     break; 
    } 
} 
+0

對不起,我在找什麼。根據我的理解,你關注的是檢查一個明星是否是這個特定容器的孩子......我試圖讓遊戲檢查該容器內的任何恆星是否存在。 – XirmiX

1

這裏就是我所做的解決我的問題......這是我有什麼之前:

function startGame():void 
{ 
    starsSpawn(); 
    //other code here 
} 

這就是我把它改爲:

starsSpawn(); 

function startGame():void 
{ 
    //other code here 
} 
相關問題