0
Я пытаюсь изменить сцены с режиссером, скользя пальцем по экрану. Однако он работает неправильно. Сцены не приходят в порядок. Можете ли вы, пожалуйста, изучить мой код и сказать мне, если я что-то пропущу? Я попытался напечатать currentNumberNo для отладки и выяснил, что он меняет дважды, когда я нажимаю мой курсор один раз. В чем причина?Изменение сцены, скользя пальцем по экрану в Corona
main.lua
local director = require "director"
--GLOBALS--
W = display.contentWidth
H = display.contentHeight
room={"kitchen", "bedroom", "bathroom"}
currentRoomNo = 1
director:changeScene("kitchen")
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
Я попытался это, но теперь это сброс currentRoomNo в новой сцене, так это потому что currentRoomNo - 1 в main.lua, а во второй комнате (currentRoomNo должно быть 2, но 1), поэтому он увеличивается до 2, что само по себе снова. Не можем ли мы изменить currentRoomNo в main.lua? Разве это не глобально? –
О, я вижу сейчас. Сложно изменить переменную, которая создается в main.lua. Когда вы пытаетесь изменить его в другом модуле, корона ведет себя так же, как вы пытаетесь создать новое значение с тем же именем. Таким образом, вы создаете новую переменную в этом модуле. Существует простой способ исправить это: вы должны создать свою переменную в основном файле lua, а также создать функцию, которая изменяет значение этой переменной, чтобы вы могли достичь того, чего хотите. –
Спасибо, Doğancan. знак равно –