Cambio dinámico de imagenes en una escena

Hola…

Ya hace algunos días he estado tratando de optimizar mi código, lo que pasa es que estoy creando un videojuego con una historia, iniciando el juego quiero que aparezca una imagen con estilo comic, y con un botón se vaya cambiando la imagen y de igual forma pueda regresar a la imagen anterior si pulsa otro botón, lo he logrado pero únicamente con la función .isVisible del objeto, y usando un grupo considerable de sentencias if… ¿Alguien me podría comentar una forma más optima de lograr esto?

Deberías poner un ejemplo del código que quieres mejorar para ayudarte mejor, pero se puede intentar. Si no me equivoco quieres gestionar la secuencia de imágenes a mostrar y que sea sencillo volver a la imagen anterior o continuar con la siguiente, lo puedes gestionar con un simple índice, por ejemplo:

Crea tus imágenes en secuencia como una tabla ordenada con índice:
 

local myImage={} myImage[1] = display.newImageRect (image1.png) myImage[2] = display.newImageRect (image2.png) myImage[3] = .... myImage[4]

con una variable controlas qué imagen es la que se muestra, por ejemplo:
 

local currentImage = 2

Si quieres avanzar a la siguiente imagen usas el siguiente código:
 

currentImage = currentImage + 1 myImage[currentImage].isVisible = true myImage[currentImage-1].isVisible = false

Para volver a la anterior:

currentImage = currentImage - 1 myImage[currentImage].isVisible = true myImage[currentImage+1].isVisible = false

El único IF que tienes que usar es para comprobar que no retrocedes a currentImage = 0 o que llegas al final de la secuencia.

Espero haber entendido tu problema, igual querías decir otra cosa pero sin ver el código es lo que me he imaginado.

Suerte.

Graaaaacias… Exactamente eso quería hacer jaja soy nuevo en esto de los foros. Crees que pueda aplicarse de la misma forma para el sceneGroup de una escena?

Para volver atrás en una escena de composer, uso un botón “Back” que usa este código:

local scene = composer.getSceneName( "current" ) backscene[scene]()

Para eso tengo definida una tabla que para cada escena de composer define cual es la escena para volver atrás

local backscene = {   ["scripts.menu"] = function () native.requestExit() end,   ["scripts.parent"] = function () goBack ("scripts.menu") end,   ["scripts.select"] = function () goBack ("scripts.menu") end,   ["scripts.puzzle"] = function () goBack ("scripts.select") end,   ["scripts.language"] = function () goBack ("scripts.menu") end,   ["scripts.aboutus"] = function () goBack ("scripts.menu") end   }

Y una función para volver atrás con las opciones que me interesan:

local function goBack (scene) local options = { effect = "zoomInOutFade",         time = 400         } composer.gotoScene( scene , options)  end

En este caso el índice de la tabla son los nombres de las escenas de composer, así llamando a la función usando el índice es fácil cambiar la escena.

Sólo tienes que poner ese código en main.lua o en módulo aparte para poder usarlo en toda tu aplicación fácilmente.

Saludos.

Luis.

Deberías poner un ejemplo del código que quieres mejorar para ayudarte mejor, pero se puede intentar. Si no me equivoco quieres gestionar la secuencia de imágenes a mostrar y que sea sencillo volver a la imagen anterior o continuar con la siguiente, lo puedes gestionar con un simple índice, por ejemplo:

Crea tus imágenes en secuencia como una tabla ordenada con índice:
 

local myImage={} myImage[1] = display.newImageRect (image1.png) myImage[2] = display.newImageRect (image2.png) myImage[3] = .... myImage[4]

con una variable controlas qué imagen es la que se muestra, por ejemplo:
 

local currentImage = 2

Si quieres avanzar a la siguiente imagen usas el siguiente código:
 

currentImage = currentImage + 1 myImage[currentImage].isVisible = true myImage[currentImage-1].isVisible = false

Para volver a la anterior:

currentImage = currentImage - 1 myImage[currentImage].isVisible = true myImage[currentImage+1].isVisible = false

El único IF que tienes que usar es para comprobar que no retrocedes a currentImage = 0 o que llegas al final de la secuencia.

Espero haber entendido tu problema, igual querías decir otra cosa pero sin ver el código es lo que me he imaginado.

Suerte.

Graaaaacias… Exactamente eso quería hacer jaja soy nuevo en esto de los foros. Crees que pueda aplicarse de la misma forma para el sceneGroup de una escena?

Para volver atrás en una escena de composer, uso un botón “Back” que usa este código:

local scene = composer.getSceneName( "current" ) backscene[scene]()

Para eso tengo definida una tabla que para cada escena de composer define cual es la escena para volver atrás

local backscene = {   ["scripts.menu"] = function () native.requestExit() end,   ["scripts.parent"] = function () goBack ("scripts.menu") end,   ["scripts.select"] = function () goBack ("scripts.menu") end,   ["scripts.puzzle"] = function () goBack ("scripts.select") end,   ["scripts.language"] = function () goBack ("scripts.menu") end,   ["scripts.aboutus"] = function () goBack ("scripts.menu") end   }

Y una función para volver atrás con las opciones que me interesan:

local function goBack (scene) local options = { effect = "zoomInOutFade",         time = 400         } composer.gotoScene( scene , options)  end

En este caso el índice de la tabla son los nombres de las escenas de composer, así llamando a la función usando el índice es fácil cambiar la escena.

Sólo tienes que poner ese código en main.lua o en módulo aparte para poder usarlo en toda tu aplicación fácilmente.

Saludos.

Luis.