El nuevo interpretador de Lua tiene los siguientes cambios importantes:
- No podemos aplicar el código antiguo de Lua player o HM en el PGE.
- No podemos utilizar cualquier eboot, tiene que ser obligatoriamente el que viene con la descarga.
- No podemos utilizar el eboot de PGE en Lua player ni en HM.
Hasta aquí lo que es necesariamente importante saber antes de empezar.
Para el uso de los diferentes código de Lua PGE se tiene que utilizar OBLIGATORIAMENTE el eboot de esta noticia.
pge.running(), pge.delay() y pge.exit() --Funciones del Sistema--
- Todo "while" o bucle tiene que empezar por "while pge.running() do" en vez de "while true do".
- Por la norma general se utiliza "break" o "System.Quit()", pero, aquí se utiliza "pge.exit()" o "break" para salir del bucle o finalizar el bucle.
- Normalmente utilizabamos "screen.waitVblankStart()" para hacer una pausa de tantos milisegundos, pero ahora se utiliza "pge.delay()".
Ejemplos:
texture = pge.texture.load("./fotos/foto.png", PGE_RAM)
while pge.running() do
pge.controls.update()
pge.gfx.startdrawing()
pge.gfx.clearscreen()
pge.texture.activate(texture)
pge.texture.draweasy(texture, 100, 100, 0, alpha)
pge.delay(20)
pge.gfx.enddrawing()
pge.gfx.swapbuffers()
if pge.controls.pressed(PGE_CTRL_START) then
pge.exit()
end
end
pge.update.controls()
- Normalmente se utilizaba "pad = Controls.read()", pero, ahora se utiliza "pge.controls.update()".
- Normalmente se utilizaba "if pad:cross() and oldPad:cross() ~= pad:cross() then" para una sola pulsación, añadiendo primeramente "oldPad = Controls.read()", pero, ahora en vez de utilizar esos dos comandos se utilza "if pge.controls.pressed(PGE_CTRL_CROSS) then".
- Para hacer que se repetieran las pulsaciones solamente hacía falta poner "if pad:cross() then", pero, ahora se utiliza "if pge.controls.held(PGE_CTRL_CROSS)". Aquí esta la diferencia entre "pressed" y "held".
Controles held (Repetición de pulsaciones):
if pge.controls.held(PGE_CTRL_LTRIGGER)
if pge.controls.held(PGE_CTRL_RTRIGGER)
if pge.controls.held(PGE_CTRL_CROSS)
if pge.controls.held(PGE_CTRL_SQUARE)
if pge.controls.held(PGE_CTRL_TRIANGLE)
if pge.controls.held(PGE_CTRL_CIRCLE)
if pge.controls.held(PGE_CTRL_START)
if pge.controls.held(PGE_CTRL_SELECT)
Controles pressed (Una sola pulsación):
if pge.controls.pressed(PGE_CTRL_LTRIGGER)
if pge.controls.pressed(PGE_CTRL_RTRIGGER)
if pge.controls.pressed(PGE_CTRL_CROSS)
if pge.controls.pressed(PGE_CTRL_SQUARE)
if pge.controls.pressed(PGE_CTRL_TRIANGLE)
if pge.controls.pressed(PGE_CTRL_CIRCLE)
if pge.controls.pressed(PGE_CTRL_START)
if pge.controls.pressed(PGE_CTRL_SELECT)
Ejemplos:
while pge.running() do
page.controls.update()
if pge.controls.pressed(PGE_CTRL_START)
break
end
if pge.controls.pressed(PGE_CTRL_CROSS)
dofile("archivo.lua")
end
if pge.controls.held(PGE_CTRL_START)
--funcion dispara-- (Disparar repetidamente sin soltar el boton)
end
end
Texture --Dibujar en Pantalla--
Modo pge.texture:
- Nosotros utilizábamos "archivo = Image.load(./fotos/fot.png")" pero ahora se utiliza "archivo = pge.texture.load("foto.png", PGE_RAM, true)".
- En vez de "screen:blit()" se utiliza "pge.texture.draweasy()"
- En vez de "archivo = Image.createEmpty()" se utiliza "pge.texture.create()"
- En vez de "archivo:width()" y "archivo:height()" se utiliza "pge.texture.width()" y "pge.texture.height()".
- Cargamos desde la memoria de la PSP "pge.texture.loadmemory()".
- Para poder imprimir las imagenes en pantalla necesitamos "pge.texture.activate()".
- Para cambiar del modo screen al modo texture: "pge.texture.settarget()"
- Hacer capturas de pantalla y guardarlas en formato PNG: "pge.texture.save()"
Modo pge.gfx:
- Al comenzamiento del bucle siempre se pone "pge.gfx.startdrawing()".
- Al final de la última impresión en pantalla se pone "pge.gfx.enddrawing()".
- Siempre se tiene que poner después del "pge.gfx.enddrawing()": "pge.gfx.swapbuffers()".
- Para crear un color en vez de "white = Color.new(255,255,255)" se utiliza "white = pge.gfx.createcolor(255,255,255)".
- En vez de "screen:clear(white)" se pone "pge.gfx.clearscreen(white)".
- Para regresar al modo screen se pone después de haber utilizado "pge.texture.settarget()": "pge.gfx.rendertoscreen()"
- Crear figuras geométricas:
- Una linia: pge.gfx.drawline()
- Una estrella: pge.gfx.drawstar()
- Un círculo: pge.gfx.drawcircle()
- Un rectángulo: pge.gfx.drawrect()
- Hacer una captura de pantalla en PNG: pge.gfx.screenshot()
ATENCIÓN: Es necesario poner pge.gfx.startdrawing() al comenzamiento del bucle y pge.gfx.enddrawing() al final de la ultima impresión en pantalla, sino no funcionará ninguna función "pge.gfx".
--Música--
Mp3:
- En vez de "Mp3me.play()" es "pge.mp3.play()".
- En vez de "Mp3me.stop()" es "pge.mp3.stop()". Esto para totalmente el Mp3.
- Podemos hacer una pausa: "pge.mp3.pause()".
- En el bucle podemos decir si queremos o no que reproduzca el Mp3: "pge.mp3.loop(false/true)"
- Podemos mesurar el volumen: pge.mp3.volume(). El valor debe de estar entre 0 y 100000.
- Almacenamos información del Mp3: "pge.mp3.getinfo()"
- Titulo: pge.mp3.title()
- Artista: pge.mp3.artist()
- Álbum: pge.mp3.album()
- Año: pge.mp3.year()
Es necesario:
mp3info = pge.mp3.getinfo()
mp3title = mp3info:title()
mp3title = pge.mp3.title(mp3info)
artist = mp3info:artist()
artist = pge.mp3.artist(mp3info)
album = mp3info:album()
album = pge.mp3.album(mp3info)
year = mp3info:year()
year = pge.mp3.year(mp3info)
Wav:
Solamente tenéis que sustituir mp3 por wav: pge.mp3.play() --------> pge.wav.play()
Timers
Crear timer:
pge.timer.create()
Actualizar temporizador o reanudar el temporizador:
pge.timer.update()
Ejemplo:
reloj = pge.timer.create()
if not reloj then
error("Fuera de tiempo.")
end
if reloj < 1000 then
pge.timer.update(reloj)
end
Bookmark/Search this post with
Comentarios
gente
En lo del sonido, donde se pone el directorio y el nombrte de archivo?
Yo lo intenté asi, pero no funciona..."pge.mp3.play(ms0:/blahblah/musica.mp3)"
Cuál seria la traduccion de "Mp3me.load()" ?
Ayuda!!!
Cuando pongo en algo dofile("INSTALLER.lua") esa opcion funciona, es más todo el script funciona, pero cuando le doy al comando que tiene el dofile la PSP se cuelga.
¿Porque es esto?
________________________________________________________________________________________________________
Este es todo el script:
Mi canal de YouTube: Aquí
¿Quieres hacer capturas de pantalla en tu GALAXY Ace nativamente?
Unos calvos y otros con 3 pelucas
Esta bien que hay que liberar recursos pero de nada te sirver liberar (nil) liberar datos simples como booleanos, enteros, etc. Hay que liberar estructurar complejas. como por ejemplo verdana16, el resto sobra como llevar 3 pelucas. Luego tenemos la parte contraria (la calva), crean 20 estructuras complejas y hacen un bucle 80 veces cargando imágenes sin liberarla nunca, si es que...
Sobre tu error, deberías poner el contenido de installer.lua, eso sí, usa el resaltado de sintaxis que así todo negro marea un poquito. :P
PD: Abre un nuevo hilo, sino los coders no te lo van a leer. A estas alguras sobra decirlo, ES DE CAJÓN, pero bueno....
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Ahh, vale.
Gracias pspgorrister.
Duda
¿Como se haría para que fuese apareciendo el texto como tu digas?
O sea, que el texto apareciese por tiempo.
SOLUCIONADO :D Gracias,
SOLUCIONADO :D
Gracias, poero ya encontré el error.
"pge.mp3.play('ms0:/blahblah/musica.mp3')"
ahora sigo teniendo ese problema con el "Mp3me.load()" si qalguien pudiera ayudarme...
Esta bien el tutorial y espero que sigas pero...
Para usar los controles es:
"pge.controls.update()" en vez de "pge.update.controls()". Con el último te da un error.
Por cierto, si quieres alguna ayuda en los tutoriales de Lua PGE, avisame, que me esta encantando programar en Lua PGE.
Saludos Coder ;)
buen aporte recoco
espero que sigas con los tutoriales ...................
cuenta con todo el apoyo........... y gracias por tu ayuda.
Muy buena información.
Lo esperaba, una pregunta, irás haciendo mas tutoriales de pge? si es así, espero encontrar mas el martes dentro de dos semanas.
Añado:
Igual que
"if pge.controls.pressed(PGE_CTRL_SQUARE)", es para cuando se pulsa un botón, "if pge.controls.release(PGE_CTRL_SQUARE)" es para cuando se suelta el boton, tambien útil (creo que no me he equivocado)
Saludos y muchas gracias.
Pordrán quitarnos nuestras vidas, pero jamas nos quitaran... Nuestra Scene!
Lua PGE
Una parte del siguiente tutorial será como utilizar el pad analógico y todos los controles adicionales.
Tengo el honor
de ser el primero en comentar, si es que no me ganan, bueno pues felicidades por esta entrega recoco, esta muy buena y nos demuestra como dia a dia avanza el lenguaje lua.
SceneBeta.com
Gracias
Gracias por el apoyo.