Ciao,
progettando delle pagine sul mio display, ora mi sta capitando un problema che mi tira pazzo! toccando sul pulsante NEXT mi dovrebbe finire all'interno della condizione con variabile "currentpage == 5" invece mi "punta" la l'if successivo con variabile "currentpage == 6"! allego il codice:
il tocco del pulsante NEXT è alla riga 564, i tocchi della pagina 5 sono alla riga 576 mentre la pagina viene costruita alla riga 462.
Grazie infinite Maurizio Filomeni
Hm, non so se ho capito bene cosa intendi, ma il programma è abbastanza vasto ed ovviamente è difficile poterlo far girare noi: ma per dire che passa nella if() sbagliata, tu hai attivato qualche forma di debug (es. sulla seriale) per capire esattamente dove passa e cosa valgono le variabili?
Comunque non mi piacciono molto quelle righe con graffe allo stesso livello. Con programmi così lunghi è essenziale avere sott'occhio la struttura del codice. Indenta per bene il codice (Ctrl-T) e rimandacelo.
Sono riuscito a capire dove è il problema! Senza prendere in considerazione l'intero codice del programma, basta analizzare i "tocchi" del pulsante NEXT e quelli sulla pagina 5.
La posizione in px del pulsante next coincide con la posizione dei px di due pulsanti nella pagina 5 che coincidono.
Quindi alla pressione del tasto NEXT entro nella pagina 5 ma avendo in "memoria" il tocco px e py è come se andassi a premere su uno dei due pulsanti al di sotto del tasto next (i tocchi coincidono) e logicamente anche se io non faccio pressione, automaticamente appena entro nella pagina 5, immediatamente vengo indirizzato alla pagina 6.
Questo è un problema perchè il programma è ancora lungo da sviluppare e i pulsanti sono a matrice quindi coincideranno parecchi pulsanti quello di una pagina superiore con quello della pagina infeiore o successiva!
La soluzione che mi era venuta è di dare un valore a px e py pari a "vuoto". in questa maniera:
Ma non va bene, si riesco ad entrare nella pagina 5 e non vengo redirezionato alla 6, ma stabilendo un valore per px e py, i tocchi nella pagina 6 non funzionano più (giustamente).
Ci dvrebbe essere un modo tipo "unset" per cancellare i valori del tocco...
Avete qualche idea pia?
Grazie
Maurizio Filomeni
Ho trovato la mia soluzione a questo problema, la posto per la community.
All'interno delle zone coincidenti con il tocco del tasto "NEXT" ho aggiunto delle condizioni (per la felicità di @docdoc).
else if (p.x > -11 && p.x < 40 && p.y > 10 && p.y < 55) {
if (currentpage == 5) {
jump++;
if (jump == 3) {
jump = 1;
}
}
if (jump > 1) {
currentpage = 6; // pagina scelta dello spessore
daDisegnare = true;
SB = 1;
}
}
Una breve spigazione:
inserisco un controllo, la variabile "jump" che si incrementa ad ogni ingresso dell'else if del "tocco" questa variabile se assume un valore superiore a 1 da il consenso alla migrazione a pagina 6. Quindi questo significa che al primo tocco del pulsante "NEXT" non entra a "leggere" la variabile currentpage = 6, ma solo con il secondo toccco sull'area sensibile si attua la migrazione a pagina 6. Per migliorare il funzionamento ho inserito un reset della variabile jump, di modo che se qualcuno ha voglia di "giocare" facendo un avanti e dietro con le pagine, il funzionamento non viene "fallato".
Vi saluto
Filomeni Maurizio