2011-06-17 69 views
0

我的按鈕和場景變化都很糟糕,我的titlescreen場景中的按鈕都可以工作並直接進入相應的屏幕,但是它們只會執行一次。所以我無法瀏覽選項,然後回到標題屏幕,然後再回到選項 - 我不知道爲什麼?使用Lua和Corona SDK時的場景和羣組問題

這裏是我的titlescreen文件:

module(..., package.seeall) 

local assetPath = "assets/" 

local mainGroup = display.newGroup() 

function new() 


    local ui = require("ui") 
    local titleScreen = display.newImageRect(assetPath .. "mainMenu.png", display.contentWidth, display.contentHeight) 
    titleScreen.x = display.contentWidth/2 
    titleScreen.y = display.contentHeight/2 
    mainGroup:insert(titleScreen) 

     local onPlayTouch = function(event) 
      if event.phase == "release" then           
      director:changeScene("gameScreen") 
      end 
     end 

     local playButton = ui.newButton{ 
     defaultSrc = assetPath .. "playnowbtn.png", 
     defaultX = 222, 
     defaultY = 62, 
     overSrc = assetPath .. "playnowbtn-over.png", 
     overX = 222, 
     overY = 62, 
     onEvent = onPlayTouch 
     } 

     playButton.x = display.contentWidth/2 
     playButton.y = 50; 
     mainGroup:insert(playButton) 

     local onOptionTouch = function(event) 
      if event.phase == "release" then           
      director:changeScene("optionsScreen") 
      end 
     end 

     local optionButton = ui.newButton{ 
     defaultSrc = assetPath .. "playnowbtn.png", 
     defaultX = 222, 
     defaultY = 62, 
     overSrc = assetPath .. "playnowbtn-over.png", 
     overX = 222, 
     overY = 62, 
     onEvent = onOptionTouch 
     } 

     optionButton.x = display.contentWidth/2 
     optionButton.y = 190; 
     mainGroup:insert(optionButton) 

    return mainGroup 
end 

我的選項文件看起來是這樣的:

module(..., package.seeall) 

function new() 

local assetPath = "assets/" 

local localGroup = display.newGroup() 

local background = display.newImage (assetPath .."optionsScreen.png") 
localGroup:insert(background) 

    local onBackTouch = function(event) 
     if event.phase == "release" then           
     director:changeScene("titleScreen") 
     end 
    end 

    local backButton = ui.newButton{ 
    defaultSrc = assetPath .. "playnowbtn.png", 
    defaultX = 222, 
    defaultY = 62, 
    overSrc = assetPath .. "playnowbtn-over.png", 
    overX = 222, 
    overY = 62, 
    onEvent = onBackTouch 
    } 

    backButton.x = display.contentWidth/2 
    backButton.y = display.contentHeight/2 
    localGroup:insert(backbutton) 

    return localGroup 
end 

現在的按鈕顯示在選擇場景和響應觸摸,但不會直接回到titlescreen。

我想我對羣組感到困惑,只將圖像分配給場景而不是整個遊戲?

任何人都可以幫助我,謝謝。

編輯:

點擊按鈕時,我也得到這些運行時錯誤。

運行時錯誤 /Users/Lewis/Desktop/proj/optionsScreen.lua:30:錯誤:表預計。如果這是一個函數調用,則可能使用了'。'而不是':' 堆棧回溯: [C]:?在功能'插入' /用戶/路由器/桌面/程序/選項屏幕。 loadScene' /Users/Lewis/Desktop/proj/director.lua:415:in function'changeScene' /Users/Lewis/Desktop/proj/titlescreen.lua:67:in function'onEvent' /Users/Lewis/Desktop/proj/ui.lua:94:功能 ?:功能 運行時錯誤 /Users/Lewis/Desktop/proj/director.lua:151:嘗試調用字段'unloadMe'(一個零值) 堆棧回溯: [C]:in function'unloadMe' /Users/Lewis/Desktop/proj/director.lua:151:in function'_listener' ?:在功能 ?:在功能

回答

0

我不使用director.lua我自己所以我不是100%肯定,但在你的options.lua你把以下兩行內的new()函數:

local assetPath = "assets/" 
local localGroup = display.newGroup() 

但是,在你的titlescreen.lua這些行高於new()函數,我認爲這就是它的需要。

一般而言,您應該使縮進一致,以便很容易注意哪些代碼位於哪個代碼塊內。

0

在你的錯誤打印輸出中,它要求卸載我的功能。

嘗試增加給你的代碼(return語句以上),看看它是否有差別:

function unloadMe() 
    print("test") 
end 

,看看是否能擺脫錯誤的。另一種選擇是放棄ui.lua並改用新的小部件庫的widget.newButton()函數。這裏是文檔頁面(語法幾乎相同,你已經有了,所以不應該有太大的變化需要):

http://developer.anscamobile.com/reference/index/widgetnewbutton