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!!
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
podrias cambiar todos los
podrias cambiar todos los elses por un if que se active cuando sueltes la pantalla:
Y también tendrias que cambiar Held por Newpress en los demas if.
Salu2
Prueba a cambiar
Stylus.Held por Stylus.Newpress
Salu2
sigue igual
o almenos con el emulador
salu2! y racias por responder
En esta línea
por ejemplo:
Pon esto al final:
while(Stylus.Held) PA_WaitForVBL();
que quede así:
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.