Anuncios Google

Ayuda con PAlib

Hola, buenos dias. Estoy preparando otro proyecto más para mi colección, pero necesito ayuda: Digamos que la pantalla inferior está partida en 4 partes iguales, y cuando yo pulso con el stylus en una de estas partes, se activa un fondo diferente al ya cargado. Pero no funciona como debe, compila, pero no va bien. Es como si cargase el fonfo mil veces (de hecho, es este el problema, y no se como solucionarlo). Si alguien me puede hechar una mano, se lo agradeceria :P. Os dejo el código:

 

// includes y variables
 #include <PA9.h>
 #include "gfx/all_gfx.c"
 #include "gfx/all_gfx.h"
 
// empezemos
 
int main(int argc, char ** argv)
 
{
	PA_Init(); // iniziamos PAlib
	PA_InitVBL(); // Iniziamos VBL
 
	PA_InitText(1,0);
 
	PA_EasyBgLoad(0,0,Nada);
 
   do{	
 
    if (Stylus.Held && PA_StylusInZone(4,4,114,81)) {PA_OutputSimpleText(1,2,5,"Verde"); PA_EasyBgLoad(0,0,Verde);}
 
    else {PA_EasyBgLoad(0,0,Nada); PA_OutputSimpleText(1,2,5,"     ");}
 
  	 if (Stylus.Held && PA_StylusInZone(4,109,139,192)) {PA_OutputSimpleText(1,2,5,"Amarillo"); PA_EasyBgLoad(0,0,Amarillo);}
 
    else {PA_EasyBgLoad(0,0,Nada); PA_OutputSimpleText(1,2,5,"          ");}
 
	 if (Stylus.Held && PA_StylusInZone(120,4,256,81)) {PA_OutputSimpleText(1,2,5,"Rojo"); PA_EasyBgLoad(0,0,Rojo);}
 
    else {PA_EasyBgLoad(0,0,Nada); PA_OutputSimpleText(1,2,5,"    ");}
 
    if (Stylus.Held && PA_StylusInZone(120,109,256,192)) {PA_OutputSimpleText(1,2,5,"Azul"); PA_EasyBgLoad(0,0,Azul);}
 
	 else {PA_EasyBgLoad(0,0,Nada); PA_OutputSimpleText(1,2,5,"    ");}
 
   }while(1);
 
 
	// Infinitas vueltas para hacer funcionar el programa
     while (1)
	{
		PA_WaitForVBL();
	}
	return 0;
 
}// Final, main();

Bueno, gracias de antemano y salu2!!



Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Salsaman

ya funciona

con lo de master sonic, lo de exterminator no funciona del todo bien

peero ahora cuando apreto una zona, me carga el fondo mil veces tambien... necesito una intruccion para que solo lo haga una vez... ¿un while?

EDITO: ya ta, me habia olvidado de cambier el held por el newpress. gracias chicos


Imagen de The Dark Master

podrias cambiar todos los

podrias cambiar todos los elses por un if que se active cuando sueltes la pantalla:

if (Stylus.Released){PA_EasyBgLoad(0,0,Nada); PA_OutputSimpleText(1,2,5,"     ");}

Y también tendrias que cambiar Held por Newpress en los demas if.

Salu2


Imagen de exterminator

Prueba a cambiar

Stylus.Held por Stylus.Newpress

Salu2

Imagen de Salsaman

sigue igual

o almenos con el emulador

salu2! y racias por responder

Imagen de exterminator

En esta línea

por ejemplo:

if (Stylus.Held && PA_StylusInZone(4,4,114,81)) {PA_OutputSimpleText(1,2,5,"Verde"); PA_EasyBgLoad(0,0,Verde);}

Pon esto al final:

while(Stylus.Held) PA_WaitForVBL();

que quede así:

if (Stylus.Held && PA_StylusInZone(4,4,114,81)) {PA_OutputSimpleText(1,2,5,"Verde"); PA_EasyBgLoad(0,0,Verde); while(Stylus.Newpress) PA_WaitForVBL;}

El problema de tu código es, que si por ejemplo, mantienes el stylus 1 segundo, de media creas 60 fondos sobre el mismo número. Así, lo crea una vez y se queda quieto mientras no levantes el stylus.

Ni que decir tiene que pongas lo mismo con todas las líneas de Stylus.Newpress

Salu2


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.