Italian Intercettare click all'interno di un Loop

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Gasp, se dovrò acquistare questo B4A e rifarmi poi con le mie App, come spero di riuscirci se mi blocco su queste cose, allora ce ne vorranno di secoli :D
Allora, nella Activity (o in un Panel), metto due immagini che dovrebbero alternarsi e, quando si tocca una delle due, dovrebbe proseguire l'app.

B4X:
Do Until Vclick
   If Vclick = True Then
       Msgbox("Premuto", "ok")
       Exit
  Else
       ImgStart2.Visible = True
       ImgStart1.Visible = True
       Attendi(2)
       ImgStart2.Visible = True
       ImgStart1.Visible = False
       Attendi(2)
   End If
Loop

B4X:
Sub Attendi(Secondi As Int)
  Dim Ti As Long
  Ti = DateTime.Now + (Secondi * 500)
  Do While DateTime.Now < Ti
  DoEvents
  Loop
End Sub

B4X:
Sub ImgStart1_Click
   Vclick = True
End Sub
Sub ImgStart2_Click
   Vclick = True
End Sub

Ora, anche se vi sarà qualche errore, comunque, non riesco ad intercettare il tasto Click e ne ho provate di diverse :(
Eppure se la condizione del Do Until è vera dovrebbe terminare... o sbaglio?

Ma è possibile intercettarlo?
Oppure come fare?
Tanks ;)
 
Last edited:

CyclopDroid

Well-Known Member
Licensed User
Longtime User
:( in Questo thread, Erel dice che non si possono intercettare i tasti in un loop.... allora come fare per creare un menu iniziale che passi oltre dopo un click sullo schermo? :confused:
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Nessuno sa dirmi se è possibile e come fare?
Ho provato a cambiare il do until con un semplicissimo ciclo for:

B4X:
For i = 0 to 1
    if Vclick = True then
        Msgbox("Intercettato click", "OK")
    end if
    i=0
Next

All'interno ho addirittura messi un Button ma, quando di clicco, seppur vedo l'oggettoaccettare il touch, questi non assegna nulla alla variabile e nemmeno si ferma al Break in debug :eek::(

Help me :confused:
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao Erosmax
ok il loop
ma se devi semplicemente fare in modo ....metto due immagini che dovrebbero alternarsi e, quando si tocca una delle due, dovrebbe proseguire l'app. ........ gestisce semplicemente l'evento click dell'immagine
o forse non ho capito bene cosa devi fare
ciaooo
Mamo
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Ho mal di testa e gli occhi rossi :(
Il fatto è che le immaggini dovrebbero alternarsi finché non ne clicco una.
Io sto provando così, ma non le intercetta, perché?:

B4X:
Sub Activity_Create (FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Layout1")
    'Setta Proporzioni
    Scale.SetReferenceLayout(320, 480, 1)
    Scale.ScaleAll(Activity, True)
    ImgStart1.Height = 100%y
    ImgStart2.Width = 100%x
    ImgStart2.Height = 100%y
    ImgStart1.Width=100%x
    Dim Vx As Int

For i=0 To 1
        If Vclick=False Then
            ImgStart2.Visible = True
            ImgStart1.Visible = True
            Attendi(2)
            ImgStart2.Visible = True
            ImgStart1.Visible = False
            Attendi(2)
        Else
            Msgbox("OK","Intercettato")
        End If
i=0
Next
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub ImgStart1_Click
    Vclick = True
End Sub

Sub ImgStart2_Click
    Vclick = True
End Sub

Sub Attendi(Secondi As Int)
  Dim Ti As Long
  Ti = DateTime.Now + (Secondi * 500) '1000=1 Secondo
  Do While DateTime.Now < Ti
      DoEvents
  Loop
End Sub

Sub Button1_Click
    Vclick = True
End Sub

Se vado in Debug mode e metto un break all'interno dei click, non si ferma.
Quello che hai detto è ciò che dovrei fare, dammi una soluzione semplice che è meglio che smetta (la mia prima App procede spedita non manca molto...questo mi serve perun'altra e per capire i perché non funziona).
 
Last edited:

lock255

Well-Known Member
Licensed User
Longtime User
Nel codice che hai postato non vedo dove hai dichiarato:
B4X:
 Dim Vclick  as Boolean

Poi non capisco perchè hai usato un ciclo for nell'Activity Create, io avrei creato una Sub a parte.
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Questa è solamente una prova :D
Anche senza il Boolean, il problema è che non si ferma nei Break messi all'interno dei Click (infatti l'ho messo e non è cambiato nulla)! :(
In pratica dovrebbe essere la prima schermata di un mio gioco, dove viene proposta l'immagie animata, graficamente con scritto "Tocca lo Schermo per Iniziare" e, al tocco, dovrebbe uscire dal ciclo o caricare una sub o un modulo, etc. etc, per continare con l'app principale. Il problema è che non esce e non intercetta nulla (in questo caso non mostra il messaggio) :(
Magari arà una cretinata ma, oggi, sono veramente esausto... è da questa mattina che stò davanti al PC e non ce la faccio più :(
Ora smetto perché altrimenti do di stomaco :D
 

LucaMs

Expert
Licensed User
Longtime User
Intanto, invece di fare:
ImgStart2.Visible = True
ImgStart1.Visible = True

carica due bitmap all'inizio e, nel ciclo, metti
if Pari (o che ne so, un altro nome) then
imgStart1.bitmap = BitMap1
else
imgStart1.bitmap = BitMap2
end if
Pari = not(Pari)

così dovrai intercettare il click su una sola imageview
(Pari dovrà essere una variabile globale).

Ora provo a fare un progettino al volo (che essendo fatto al volo, non funzionerà :))

Ma prima mi serve un caffè :D
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Ve l'ho detto che eroo stanco :confused: :p
Comunque grazie ;)
Scusa se ti ho risposto solo ora ma stavo preparando la cena... almeno mi staccavo e mi divertivo :D
Buona notte a tutti.
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Ariecchime con il solito sbattimento :D
Ho provato il tuo codice LucaMS e funziona ma... a me serve che parte automaticamente e non che venga premuto un bottone prima. :(
Ho messo, nel tuo codice, nella Activity_Create un richiamo al click diretto sullo Start
B4X:
btnStart_Click
o a richiamare direttamente la Sub Start, ma fa quello che accade nella mia prova... rimane impallato e non accetta nessun click! :(

Per capirci:

1) Parte la App;
2) Viene mostrata la Intro (le 2 immagini che richiedono la pressione di un tasto);
3) Parte il gioco.

Spero mi sono spiegato e buona festa ;)
 

LucaMs

Expert
Licensed User
Longtime User
uhm... se metti tutto in una seconda Activity e richiami la Sub Start dall'interno della Resume della Main?

Dovresti usare:

(Main)
Sub Activity_Resume
CallSubDelayed(SecondaActivity, "Start")
End Sub
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
...mmmh scusa ma non capisco! :oops:
Devo spostare tutto quelo che ho sulla Main in un nuovo Modulo?
Potresti postarmi un piccolissimo esempio? :oops:
Grazie
 

LucaMs

Expert
Licensed User
Longtime User
Se proprio vuoi lanciare immediatamente il gioco, senza i tasti, potresti fare così (a me non piace per niente, eh! Nel senso che la Main, in questo caso, non ha scopo)
 

Attachments

  • lm Click into Loop2.zip
    94 KB · Views: 189

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Se lancio il tuo codice, fa la stessa cosa che faceva con i vari Loop, Do While, etc... se clicco non intercetta il tocco e non si ferma!!!
Ora, tu lo hai testato? Se clicchi sull'immagine si ferma? Perché a me non lo fa affatto :(

Insomma deve fare così:
https://www.dropbox.com/s/tvigws6k9m71o65/Touch.jpg
 
Last edited:

CyclopDroid

Well-Known Member
Licensed User
Longtime User
No. A me non funziona proprio :(
Stavo pensando :rolleyes:... non è perché hai messo gli stemmi del Milan e della Giuve? Forse se metto quella della Roma funziona! :D
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Forza Romaaaa :D
No, non l'ho toccato. l'ho estratto e caricato con doppio click. :(:(
Partono i due gagliardetti alla velocità della luce ma, se tocco lo schermo,non succede nulla. Ho provato, come il mio primo in partenza, a lanciarlo anche in debug e mettere dei punti Break all'interno delle azioni click... ma non si ferma :(
Continua imperterrimo a switchare finché non premo il tasto Home e chiudo trascinandolo. :(
 
Top