2015-10-05 19 views
0

在「tap」上,firstBar1.lua轉到scene1.lua。如果在場景1超時期間沒有敲擊,則它會移至場景2等等; scene1有一個goBack按鈕指向firstBar1。它回到片刻,但繼續到場景2.它需要保持在firstBar1,直到有另一個水龍頭。我試過各種按鈕代碼,這是我所能得到的最好結果。打印(「firstBar1」)在點擊後退按鈕後不起作用。後退按鈕不會導航到所需場景

-- firstBar1.lua 
    ----------------------------------------------------- 

    local composer = require ("composer")    
      print ("firstBar1") 
    local scene = composer.newScene()          
    function scene:create(event) 
      local screenGroup = self.view 

    local widget = require ("widget") 

    local function onScene1BtnRelease() 
      composer.gotoScene("scene1", "fade", 40) 
      return true  
    end 

    image1 = "images/staveBlankgrey2.png" 

    local scene1Btn = widget.newButton{ 
      defaultFile = image1, 
      width = 480, height = 320, 
      onRelease = onScene1BtnRelease 
    } 
     screenGroup:insert(scene1Btn) 

    end 

    scene:addEventListener("create", scene) 
    scene:addEventListener("show", scene) 
    scene:addEventListener("hide", scene) 
    scene:addEventListener("destroy", scene) 

    return scene 

場景1:

-- scene1.lua 
    -------------------------------------------------------------------- 

    local mydata = require ("mydata") 

    local composer = require ("composer") 
    local scene = composer.newScene() 

      local function showScene2() 
        local options = { 
          effect = "slideLeft", 
          time = 130, 
        } 
      composer.gotoScene("scene2", options) 
      end 

    -- create scene 3 

    function scene:createScene (event) 
    local sceneGroup = self.view 
    end  

    function scene:show(event) 
    local sceneGroup = self.view 
    local phase = event.phase 

    -- will 

    if (phase == "will") then 

      data = data + 1 
        if data == 5 then 
        sub = sub + 1 
        data = 1 
      end 
      if sub == 3 then 
      section = section + 1 
        sub = 1 
        data = 1 
      end 

     stave = display.newImage("images/staveBlankgrey2.png", 240, 160) 
     note1 = display.newImage("images/crDown.png", 130, 141) 
     count = display.newImage(workoutTable[section][sub][data], 60, 40) 

      sceneGroup:insert(stave) 
      sceneGroup:insert(note1) 
      sceneGroup:insert(count) 

     -- goBackBtn         

      local widget = require ("widget") 

      local button = display.newImage("images/goBackBtn.png") 
      button.x = display.contentWidth/2 
      button.y = display.contentHeight - 60 

      sceneGroup:insert(button) 

      function button:tap(event) 
        composer.gotoScene("firstBar1", "fade", 30) 
      end 
      button:addEventListener("tap", button) 
      print ("button 1 pressed") 
      sceneGroup:insert(button) 
      return true 

     -- did 

      elseif (phase == "did") then 
        local function showScene2() 
         local options = { 
          effect = "slideLeft", 
          time = 30, 
              } 
      composer.gotoScene("scene2", options) 
      end 

      timer.performWithDelay(tempo, showScene2) 
     end 
end  

    -- hide/destroy 

    function scene:hide(event) 
      local sceneGroup = self.view 
      local phase = event.phase 
    end 

    function scene:destroy(event) 
      local sceneGroup = self.view 
    end 

    scene:addEventListener("create", scene) 
    scene:addEventListener("show", scene) 
    scene:addEventListener("hide", scene) 
    scene:addEventListener("destroy", scene) 

    return scene 

如果我失去了一些東西出來可能你還告訴我在哪裏有呢?謝謝。

回答

0

當您處理後退按鈕觸摸時,您需要取消正在進入下一個場景的定時器。

在模塊的頂部聲明一個變量來存儲句柄定時器:

local sessionTimer 

然後,當你啓動計時器做:

sessionTimer = timer.performWithDelay(tempo, showScene2) 

最後,如果你離開現場之前到定時器的出口,也許在你的按鈕處理程序,做:

timer.cancel(sessionTimer) 

或類似的東西。

+0

謝謝。我試過這個,但找不到正確的代碼來實現它。請看'BackBtn不取消前一場景的定時器'。也許你可以提出一些建議?謝謝。 – julianLE3