Puedes usar los controles de la PSP con la clase Controls. "Control.read()" lee el estado actual de un boton determinado, como por ejemplo la cruz. El resultado sera true si el boton cruz es pulsado, y falso en cualquier otro caso. analogX y analogY retorna la posicion del pad analogico. El rango va desde -128 a 127, pero los valores por debajo de 32 pueden ser producidos aunque el pad este centrado.
En el ejemplo de un programa de dibujo, usamos el analogico para mover el cursor, mantener pulsada la cruz dibujara una linea, select guardara la imagen y start terminara.
red = Color.new(255, 0, 0); black = Color.new(0, 0, 0); white = Color.new(255, 255, 255); canvas = Image.createEmpty(480, 272) canvas:clear(white) brush = {} eraser = {} x0 = 0 y0 = 0 x1 = 0 y1 = 0 while true do pad = Controls.read() dx = pad:analogX() if math.abs(dx) > 32 then x0 = x0 + dx / 64 end dy = pad:analogY() if math.abs(dy) > 32 then y0 = y0 + dy / 64 end if pad:cross() then canvas:drawLine(x0, y0, x1, y1, black) end x1 = x0 y1 = y0 screen:blit(0, 0, canvas, 0, 0, canvas:width(), canvas:height(), false) screen:drawLine(x1 - 5, y1, x1 + 5, y1, red) screen:drawLine(x1, y1 - 5, x1, y1 + 5, red) screen.waitVblankStart() screen.flip() if pad:start() then break end if pad:select() then screen:save("screenshot.tga") end end
En lugar del comando drawLine con el color rojo para la cruz, puedes usar screen:blit(x1, y1, yourCursorImage) para dibujar una imagen con tu cursor y puedes eliminar el drawLine cuando se pulsa la cruz, si no quieres implementar un programa de dibujo.
Puedes detener la repeticion en los controles añadiendo la siguiente linea de codigo.
function controls() pad = Controls.read() if pad ~= oldPad then --yourcodehere end oldPad = pad end
Comentarios
lo que pasa es que tienes
lo que pasa es que tienes que ponerlo asi "pad:cross()"
Que pasa?
Soy un novatisimo en la programacion (solo partia de las bases de HTML y CSS) i he intentado programar un mini reproductor. Cuando lo cargo me aparece: ERROR: System/System.lua:30: ´=´ expected near ´end´
El codigo es este:
rojo = Color.new(255, 0, 0)
verde = Color.new(0, 255, 0)azul =
Color.new(0, 0, 255)
blanco = Color.new(255, 255, 255)
screen:print(20, 101, "Pulsa X para escuchar la cancion It is my life", rojo)
screen:print(20, 111, "Pulsa triangulo para escuchar la cancion What is love.", verde)
screen:print(20, 131, "Pulsa start para salir.", blanco)
screen:print(20, 121, "Pulsa circulo para parar la musica actual", azul)
screen:flip()
while true do
pad = Controls.read
if pad==cross() then
Music.playFile("1.wav", false)
end
if pad==circle() then
Music.stop()
end
if pad==triangle() then
Music.playFile("2.wav", false)
end
if pad==start() then
break
end
screen.waitVblankStart
end
a si tambien en vez de poner
a si tambien en vez de poner screen:flip() antes de while true do ponlo despues de while true do y despues al final pon screen.waitVblankStart() en vez de screen.waitVblankStart y seguido pon screen.flip()
en vez de poner if
en vez de poner if pad==cross() then Music.playfile("1.wav",false) trata con if pad:cross() then Music.playFile("1.wav",false) espero haberte ayudado ojala te conviertas en un gran programador
¡¡ay que me LOL!!
Posiblemente le hubieras ayudado si su post no fuera de hace una año. xDDD.
A ver si nos fijamos y no resucitamos post para nada. Que al que le contestas es peor aún, resucita un post 2 años después.
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.