2012-12-09 102 views
0

我在基於事件偵聽器和全局變量獲取場景時發生問題。Corona sdk enterframe event director with director

基本上,由於選擇的水平需要被限制,所以在做出某些選擇之後重新進行變量finalcount的增量。當計數器達到4時,場景應該改變,這使得finalcountscene變量等於1.這應該引發場景的改變,而不是scenechangeworking 5次。所以這個功能起作用,但場景不會改變。請幫忙!代碼可以在下面找到。

local function scenechangecount (event) 
    if gameState.finalcountscene == 1 then 
     Runtime:removeEventListener("enterFrame", maincount) 
     director:changeScene ("gamemenu") 
     print("scene change working") 
     Runtime:removeEventListener("enterFrame", scenechangecount) 
end 
end 

local function maincount (event) 
    if gameState.finalcount == 4 then 
     gameState.finalcountscene = 1 
    print("working",gameState.finalcount, "scene count", gameState.finalcountscene) 
    Runtime:removeEventListener("enterFrame", maincount) 

    elseif gameState.finalcount == 3 then 
     gameState.finalcount = gameState.finalcount +1 
     print(gameState.finalcount) 
     local message = display.newImage ("images/message.png") 
     message.x = display.contentWidth/2 - display.contentWidth/6 
     message.y = display.contentHeight/2 - display.contentHeight/4 - display.contentHeight/18 
     localGroup:insert(message) 
     Runtime:removeEventListener("enterFrame", maincount) 

    else 
     gameState.finalcount = gameState.finalcount + 1 
     print(gameState.finalcount) 
     Runtime:removeEventListener("enterFrame", maincount) 
end 
end 

Runtime:addEventListener ("enterFrame", scenechangecount) 
Runtime:addEventListener ("enterFrame", maincount) 

回答

0

我看到了一些問題。首先在你的第一個函數scenechangecount中,你可以調用director來改變場景,然後再刪除enterFrame監聽器,這樣你的函數將會繼續運行並嘗試多次改變場景。嘗試將導演電話轉到這三行中的最後一行。

其次,似乎你每次都會刪除maincount輸入框,但至少在上面只添加一次。所以我不明白你是如何增加計數器的方式來去除那個輸入框。

+0

嗨,謝謝你的回覆。我已經改變了給導演的呼叫順序,以改變場景,但它多次重複呼叫,但不改變場景。我刪除事件監聽器的原因是因爲計數器在每次場景返回時都會增加。它就像一個菜單頁面,其中按鈕導致不同的外部場景,所以當這個場景返回到計數增加時。如果有人可以弄清楚,我會永遠感激 – user1728717

+0

什麼情況會導致gameState.finalcount增加?我不確定你想用enterFrame監聽器來調用maincount()。 您爲maincount()設置enterFrame偵聽器並調用它,遞增gameState.finalcount變量,然後立即刪除enterFrame偵聽器。我沒有看到你如何回到這個功能。你是否在其他地方設置了enterFrame監聽器? –