2012-12-09 42 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监听器? –