Page 1 sur 1

Timer

Publié : jeu. 10/sept./2015 10:32
par MichelM38
Bonjour

Sous visual basic,il existe un objet permettant de programmer un événement avec une période programmable ( timer si je me souviens bien)
Existe t il sous PB un gadget equivalent ? Ou sinon, connaissez des librairies ou codes permettant de le faire ?

Merci

Re: Timer

Publié : jeu. 10/sept./2015 10:36
par Kwai chang caine
Bonjour MichelM38 :D

Dans l'aide y'a deja ça en natif

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 400, 100, "Timer Exemple", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ProgressBarGadget(0, 10, 10, 380, 20, 0, 100)
    AddWindowTimer(0, 123, 250)
    
    Value = 0
    Repeat
      Event = WaitWindowEvent()
      
      If Event = #PB_Event_Timer And EventTimer() = 123
        Value = (Value + 5) % 100
        SetGadgetState(0, Value)
      EndIf    
      
    Until Event = #PB_Event_CloseWindow
  EndIf

Re: Timer

Publié : jeu. 10/sept./2015 10:38
par Kwai chang caine
Et si c'est que pour Windows et que tu n'as pas de version de démo, il peut y avoir ça avec les API

Code : Tout sélectionner

 Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
    Select uMsg
        Case #WM_TIMER
            Select idEvent
                Case 1
                    Debug "--------------------1 seconde"
                    ; Ici, le code à executer toutes les secondes
                Case 2
                    Debug "0.2 secondes"
                    ; Ici, le code à executer toutes les 200 millisecondes
                Case 3
                    Debug "-------------------------------------------3 secondes"
                    ; Ici, le code à executer toutes les 3 secondes
            EndSelect
    EndSelect
EndProcedure


If OpenWindow(0, 100, 100, 100, 100,"", #PB_Window_SystemMenu)
    Handle = WindowID(0)
    
    SetTimer_(Handle, 1, 1000, @TimerProc()) ; envoie un evenement toutes les 1000 millisecondes
    SetTimer_(Handle, 2, 200, @TimerProc())  ; envoie un evenement toutes les 200 millisecondes
    SetTimer_(Handle, 3, 3000, @TimerProc())  ; envoie un evenement toutes les 3000 millisecondes
    
    Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf 

Re: Timer

Publié : jeu. 10/sept./2015 11:14
par microdevweb
Dans le cadre d'un jeux tu peux également de le développé toi même
Édité pour correction (conso processeur)

Code : Tout sélectionner

InitSprite()
OpenWindow(0,0,0,800,600,"teste")
OpenWindowedScreen(WindowID(0),0,0,800,600)
 Define gTimeElapsed,gTriger=1000,gCount=0
CreateSprite(0,100,100)
LoadFont(0,"Arial",30)
Repeat
      Repeat
            gEvent=WindowEvent()
            If gEvent=#PB_Event_CloseWindow
                  End
            EndIf
      Until gEvent=0
      If (ElapsedMilliseconds()-gTimeElapsed)>=gTriger ;Le triger ICI
            gCount+1
            StartDrawing(SpriteOutput(0))
            DrawingFont(FontID(0))
            X=(100/2)-((TextWidth(Str(gCount)+" '' "))/2)
            Y=(100/2)-((TextHeight(Str(gCount)+" '' "))/2)
            DrawText(X,Y,Str(gCount)+" '' ")
            StopDrawing()
            gTimeElapsed=ElapsedMilliseconds()
      EndIf
      ClearScreen(0)
      DisplaySprite(0,350,250)
      FlipBuffers()
ForEver