settings.lua
local lang_table = {
{image = display.newImage("en.png"), x = 600, y = 400, lang = "1033", i = 1},
{image = display.newImage("fr.png"), x = 600, y = 400, lang = "fr", i = 2},
{image = display.newImage("dk.png"), x = 600, y = 400, lang = "dk", i = 3},
{image = display.newImage("ge.png"), x = 600, y = 400, lang = "ge", i = 4} }
local function changelanguage (event)
if event.phase == "ended" then
lang_table[event.target.i].image.isVisible = false
if event.target.i == 4 then
lang_table[1].image.isVisible = true
_G.value = event.target.lang
director:changeScene("settings")
else
lang_table[event.target.i+1].image.isVisible = true
_G.value = lang_table[event.target.i+1].lang
director:changeScene("settings")
end
end
return true
end
for i = 1,#lang_table do
local img_display = lang_table[i].image
img_display.x = lang_table[i].x
img_display.y = lang_table[i].y
img_display.i = lang_table[i].i
img_display.lang = lang_table[i].lang
if _G.value ~= lang_table[i].lang then
img_display.isVisible = false
end
img_display:addEventListener("touch", changelanguage)
langGroup:insert(img_display)
end
When I touch the image,changelanguage function is being invoked.In that function there is
director:changeScene
but this is not working.Basically,what I want is that whenever there is touch event to the image I want the same lua file to be called.But this is not happening.Then What I did was changed the function “changelanguage” to
_G.t =1
local function changelanguage (event)
if event.phase == "ended" then
lang_table[event.target.i].image.isVisible = false
if event.target.i == 7 then
lang_table[1].image.isVisible = true
_G.value = event.target.lang
director:changeScene("settings")
else
lang_table[event.target.i+1].image.isVisible = true
_G.value = lang_table[event.target.i+1].lang
if _G.t ==1 then
director:changeScene("..\settings")
_G.t = _G.t+1
elseif _G.t ==2 then
director:changeScene("..\..\settings")
end
end
end
return true
end
Now, it is working.But I dont know why is this happening.Can anyone suggest me why is this happening.Cant I use the same director:changeScene("settings") to change the scene again and again on touch event.
You cannot use Director to change to a scene you are already in, eg, calling director:changeScene(“settings”) from within settings.lua, no.
You can do this in Storyboard, however. (It may be worth considering a switch if this is something you will be doing a lot of, alternatively you could make a file such as reset.lua and write functions within there to effectively reload any scene you liked simply by changing to reset and back to the previous scene again.)