0

イベントリスナーとグローバル変数に基づいてシーンを変更するのに問題があります。

finalcount基本的に、選択のレベルを制限する必要があるため、特定の選択が行われた後、変数をインクリメントするシーンが繰り返されます。カウンターが4に達するとシーンが変化し、finalcountscene変数が1になります。これにより、scenechangeworking5回ではなく、シーンの変化がトリガーされます。したがって、関数は機能しますが、シーンは変更されません。助けてください!コードは以下にあります。

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)
4

1 に答える 1

0

いくつかの問題があります。まず、最初の関数 scenechangecount で、enterFrame リスナーを削除する前に director を呼び出してシーンを変更します。これにより、関数は引き続き実行され、シーンを複数回変更しようとします。ディレクター コールをこれら 3 行の最後に移動してみてください。

第二に、毎回 maincount エンター フレームを削除しているように見えますが、少なくともそれ以上は 1 回しか追加していません。そのため、そのエンターフレームを削除する方法でカウンターをインクリメントする方法がわかりません。

于 2012-12-10T03:11:05.307 に答える