0

我正在尝试通过在屏幕上滑动手指来更改导演类的场景。但是,它无法正常工作。场景不按顺序出现。您能否检查我的代码并告诉我是否遗漏了什么?我尝试打印 currentNumberNo 进行调试,发现当我滑动一次光标时它会更改两次。可能是什么原因?

主程序.lua

local director = require "director"
--GLOBALS--
W = display.contentWidth
H = display.contentHeight
room={"kitchen", "bedroom", "bathroom"}
currentRoomNo = 1

director:changeScene("kitchen")

厨房.lua:

module(..., package.seeall)
local director = require "director"

function new()

group = display.newGroup()

local bg = display.newRect(0,0,W,H); bg:setFillColor(255,250,30)
group:insert(bg)

---[[
local function slide(event) 
if event.phase == "ended" or event.phase == "cancelled" then
    local dif = event.xStart-event.x
    if dif> 30 then
        if currentRoomNo==#room then
            currentRoomNo = 1
        else
            currentRoomNo = currentRoomNo + 1
        end
    director:changeScene(room[currentRoomNo])
    elseif dif< -30 then
        if currentRoomNo==1 then
            currentRoomNo = #room
        else
            currentRoomNo = currentRoomNo - 1
        end
    director:changeScene(room[currentRoomNo])
    end 
end
return true
end

Runtime:addEventListener("touch", slide)
--]]
return group

end
4

1 回答 1

2

尝试这个:

module(..., package.seeall)
local director = require "director"

function new()
local isChanging = false
group = display.newGroup()

local bg = display.newRect(0,0,W,H); bg:setFillColor(255,250,30)
group:insert(bg)

---[[
local function slide(event) 
if ( event.phase == "ended" or event.phase == "cancelled" ) and isChanging == false then
    local dif = event.xStart-event.x
    if dif> 30 then
        if currentRoomNo==#room then
            currentRoomNo = 1
        else
            currentRoomNo = currentRoomNo + 1
        end
    director:changeScene(room[currentRoomNo])
    isChanging = true
    elseif dif< -30 then
        if currentRoomNo==1 then
            currentRoomNo = #room
        else
            currentRoomNo = currentRoomNo - 1
        end
    director:changeScene(room[currentRoomNo])
    isChanging = true
    end 
end
return true
end

Runtime:addEventListener("touch", slide)
--]]
return group

end
于 2013-07-30T15:17:39.803 回答