Hola a todos. me "integré" hace poco en la programacion en LUA y he creado ya TBBD. Ahora estoy trabajando en un nuevo proyecto (cuyo nombre y contenido no revelare hasta que este terminado) y tenia una pregunta entre manos.
¿Como puedo hacer para que, cuando pulse un boton en la PSP, aparezca un mensaje, PERO que no se esconda de nuevo cuando dejo de pulsar, y que vuelva a pulsar el boton y salga otro mensaje pero sin que se mezcle con el anterior?
Gracias al que me responda.
Saludos.
Bueno...
Como te estás iniciando, no seré tan severo xD
Usa variables de estado a como dicen más abajo, ejemplo:
Eso es si no sabes usar arrays, con arrays es mucho más sencillo, mira:
De esta manera puedes tener la cantidad de mensajes que quieras sin que aumente la cantidad de ifs :D
Saludos!
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
Ups...
Lo siento. Es que como vi el apartado "DUDAS Y PREGUNTAS", crei que se ponian hay.
Usa current algo asi: current
Usa current algo asi:
current = mensaje1
if pad:cross() and oldpad:cross() ~= pad:cross() and current == mensaje1 then
current = mensaje2
end
if pad:cross() and oldpad:cross() ~= pad:cross() and current == mensaje2 then
current = mensaje3
end
if pad:cross() and oldpad:cross() ~= pad:cross() and current == mensaje3 then
current = mensaje1
end
solo agregas las variables de escribir y pues las acomodas el curren con los botones y mensajes que tu quieras y listo
UFfff
sigo sin entenderlo.
ok mira te explico: primero
ok mira te explico:
primero cargas lo que quieres mostrar en pantalla
mensaje1 = screen:print(10,30,"texto",color)
mensaje2 = screen:print(10,30,"texto2",color)
esto es para evitar la doble pulsaccion
oldpad = Controls.read()
haces la funcion
function mensajes()
muestras el primer mensaje al llamar la funcion con current
current = mensaje1
despues esto.
if pad:xxx() and oldpad:xxx() ~= pad:xxx() and current==mensaje1 then
current=mensaje2
end
Aqui arriba dice que si presionas el boton (tu escoje cual remplasando las xxx) y current es exactamente igual a mensaje1 entonces current va a pasar a mensaje2 y va a mostrar el segundo texto borrando el primero.
si quieres regresar del segundo texto al primero tienes que hacer algo asi.
if pad:xxx() and oldpad:xxx() ~= pad:xxx() and current==mensaje2 then
current=mensaje1
end
si quieres que despues de mostrar el texto aga otra cosa tienes que ponerla despues del then y antes del texto para que el texto quede arriba de lo que agas algo asi.
if pad:xxx() and oldpad:xxx() ~= pad:xxx() and current==mensaje1 then
screen:blit(0,0,imagen)
current=mensaje2
end
asi como puse una imagen en el ejemplo puedes poner un sonido o cambiar de script o lo que se te ocurra ya por ultimo cierras la funcion
end
O lo puedes hacer como dice moikop con boleanas un ejemplo primero cargas las variables.
mensaje1 = false
mensaje2 = false
despues haces lo que quieras que pase si lo pones en true tambien lo puedes poner dentro de una funcion para meterlo al bucle.
funcion mensajes()
if mensaje1 == true then
screen:print(10,30,"texto",color)
end
Arriba dice que si mensaje es exactamente igual a true entonces mostrara el mensaje1
if mensaje2 == true then
screen:print(10,30,"texto2",color)
end
lo mismo pero muestra el texto2 y cierras funcion
end
ya solo tienes que poner en true las variables para que las muestre como tu quieras espero y entiendas saludos.
Joooo...
Todavia no lo he conseguido. Mira mi codigo e intenta corregirlo, por favor.
--Variable color y mensajes.
rojo = Color.new(255,0,0)
mensaje1 = screen:print(5,5,"Hola",rojo)
mensaje2 = screen:print(5,5,"¿Como te llamas?",rojo)
mensaje3 = screen:print(5,5,"Davidove, ¿y tu?",rojo)
mensaje4 = screen:print(5,5,"Carlos",rojo)
--Mostrar conversacion.
while true do
pad = Controls.read()
oldpad = Controls.read()
screen.waitVblankStart()
function mensajes()
current = mensaje1
end
if pad:cross() and oldpad:cross() ~= pad:cross() and current == mensaje1 then
current = mensaje2
end
if pad:cross() and oldpad:cross() ~= pad:cross() and current == mensaje2 then
current = mensaje3
end
if pad:cross() and oldpad:cross() ~= pad:cross() and current == mensaje3 then
current = mensaje4
end
if pad:cross() and oldpad:cross() ~= pad:cross() and current == mensaje4 then
current = mensaje1
end
screen.flip()
end
Tio, lo has explicado de muerte
Gracias. Hay te van 50 scenebitos.
Saludos.
Usa las denominadas
variables de estado. Estas son variables booleanas que, como el nombre indica, representan el estado de algo :P
Suerte.