2017-04-19 142 views
0

我使用gotoscene從menu.lua轉到game.lua。在game.lua結束時,我再次從game.lua轉換到menu.lua。在場景下:在menu.lua中顯示我刪除遊戲場景。當我回到game.lua場景中的所有內容時:show重複兩次。場景:創造仍然只有一次。場景:第二次出現在場景中後顯示兩次

任何想法,爲什麼會這樣?

謝謝。

function scene:show(event) 

    local sceneGroup = self.view 
    local phase = event.phase 

    if (phase == "will") then 

print("does this print once or twice?") 



     -- Code here runs when the scene is still off screen (but is about to come on screen) 

    elseif (phase == "did") then 
    physics.start() 
gameLoopTimer = timer.performWithDelay(1750, gameLoop, 0) 




    -- Start the music! 
     audio.play(musicTrack, { channel=1, loops=-1 }) 
     audio.setVolume(0, { channel=1 }) 


     -- Code here runs when the scene is entirely on screen 


    end 

end 

composer.gotoscene(game.lua)由抽頭通過此它們是在創建階段稱爲menuDrawer函數創建的多個對象中的一個調用。

local function menuDrawer() 

.... 

for i = 1, #menuLetters, 1 do 

.... 

    local Letterbackground = display.newRoundedRect(sceneGroup, Letterbackgroundx, Letterbackgroundy, 100, 125, 10) 

.... 
Letterbackground:addEventListener("tap", gotoGame) 
end 

EventListener不會被刪除,因爲只有函數中的局部變量定義了EventListener。這會導致問題嗎?

如果您需要更多信息,請讓我知道。

+0

只是一個說明:爲了確認這一點,我只是在場景下放了print(「something」):show。 – Atrag

回答

0

問題解決了。 menu.lua中的gotoscene被一個叫做tap的函數所調用,並且在函數的結尾被'return true'修復。

1

scene:show有兩個相位等於didwill。所以它確實被稱爲兩次。見下面的代碼(它來自Introducing the Composer API

-- "scene:show()" 
function scene:show(event) 

    local sceneGroup = self.view 
    local phase = event.phase 

    if (phase == "will") then 
     -- Called when the scene is still off screen (but is about to come on screen). 
    elseif (phase == "did") then 
     -- Called when the scene is now on screen. 
     -- Insert code here to make the scene come alive. 
     -- Example: start timers, begin animation, play audio, etc. 
    end 
end 
+0

嗨。對不起,是的,我知道。我的意思是在每個短語下重複兩次。我將編輯我的原始文章以包含它。 – Atrag

+0

我有類似的問題。它與事件聽衆有關。在它內部,我放了'composer.gotoScene'調用。在移至下一個場景之前,我忘記移除事件監聽器。所以這是兩次以上的電話。每次我回到菜單場景時它會增加。如果您顯示更多代碼,那麼爲我解決問題將更容易。 – ldurniat

+0

好的。再次編輯。謝謝。但是如果情況確實如此,我肯定創作場景也會運行兩次。 – Atrag