Page 1 sur 1

[RESOLVED]2D ExamineMouse() SACCADE

Publié : sam. 18/août/2012 15:02
par Atlante
Hello,

Suis je le seul à avoir des ralentissements avec cette fonction ?
Je m'explique : quand je bouge la souris doucement pas de problème, mais lorsque je la bouge normalement ça saccade surtout en diagonale.

Même sur le mouse exemple de Pure basic :

Code : Tout sélectionner

; ------------------------------------------------------------
;
;   PureBasic - Mouse example file
;
;    (c) 2001 - Fantaisie Software
;
; ------------------------------------------------------------
;

If InitMouse() = 0 Or InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7", 0)
  End
EndIf

;
;-------- MessageReq and OpenScreen --------
;

MessageRequester("Information", "This will test the fast mouse access..."+Chr(10)+"Press any mouse button to quit!", 0)

If OpenScreen(800, 600, 16, "Mouse") = 0
  MessageRequester("Error", "Impossible to open a 800*600 16 bit screen",0)
  End
EndIf

;
;-------- Init and Load Stuff --------
;

x = 100
y = 100

LoadSprite(0, "Data/PureBasic.bmp", 0)   ; Load nice small Logo

;
;-------- MainLoop --------
;

Repeat
  FlipBuffers()                        ; Flip for DoubleBuffering
  ClearScreen(RGB(0,0,0))                   ; CleanScreen, black

  ExamineKeyboard()
  ExamineMouse()                      
          
  x = MouseX()                         ; Returns actual x pos of our mouse
  y = MouseY()                         ; Returns actual y pos of our mouse
  
  x+MouseWheel()*10
  
  If MouseButton(#PB_MouseButton_Middle)
    MouseLocate(400, 300)
  EndIf

  DisplaySprite(0, x-SpriteWidth(0)/2, y-SpriteHeight(0)/2)

Until MouseButton(#PB_MouseButton_Left) Or MouseButton(#PB_MouseButton_Right)

End    

Re: 2D ExamineMouse() SACCADE

Publié : sam. 18/août/2012 15:31
par Atlante
Bon j'ai trouvé la réponse sur le forum Anglais :
http://www.purebasic.fr/english/viewtop ... e&start=15

Code : Tout sélectionner

InitSprite()
InitMouse()

OpenWindow(0, 0, 0, 640, 480, "Crap Mouse Movement", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_BorderLess)
OpenWindowedScreen(WindowID(0), 0, 0, 640, 480, 0, 0, 0, #PB_Screen_SmartSynchronization)

CreateSprite(0, 32, 32)
StartDrawing(SpriteOutput(0))
Box(0, 0, 32, 32, #Blue)
StopDrawing()

Global mousex.i,mousey.i,screenactive.i

Procedure mousethread(flag.i)
   Static quit.i
   If flag
      Repeat
         If ExamineMouse()
            mousex=MouseX()
            mousey=MouseY()
         EndIf
         Delay(1)
      Until quit
      quit=#False
   Else
      If Not flag
         quit=#True
         While quit
            Delay(1)
         Wend
      EndIf
   EndIf
EndProcedure

Define testscreenactive.i=#True
CreateThread(@mousethread(),#True)
Repeat
   Repeat
      Event = WindowEvent()
      Select Event
         Case #PB_Event_CloseWindow
            Quit = 1
      EndSelect
   Until Event = 0
   
   ClearScreen(#Black)
   DisplaySprite(0, mousex, mousey)

   FlipBuffers()
   testscreenactive=IsScreenActive()
   If testscreenactive<>screenactive
      screenactive=testscreenactive
      If screenactive=1
         ReleaseMouse(#False)
         ShowCursor_(#False)
      Else
         ReleaseMouse(#True)
         ShowCursor_(#True)
      EndIf
   EndIf

   Delay(10)
Until  Quit Or (GetKeyState_(#VK_ESCAPE)&%10000000 And GetActiveWindow() = pWnd)
mousethread(#False)
CloseScreen()
End

Re: 2D ExamineMouse() SACCADE

Publié : sam. 18/août/2012 15:33
par G-Rom
Qu'appelle tu saccades ?
si tu bouge plus vite que ton écran peu rafraîchir , c'est normal. au pire, rajoute un delay(10) dans la boucle principale.

Re: [RESOLVED]2D ExamineMouse() SACCADE

Publié : sam. 18/août/2012 15:40
par Atlante
C'est un problème matériel&OS&Pure Basic : réglé avec un thread pour choper la souris.

Je vous conseille de faire la modification dans vos jeux 2D, car les personnes qui ont des souris comme moi vont galérer avec vos jeux xD.
J'ai une souris Roccat Pyra.

Re: [RESOLVED]2D ExamineMouse() SACCADE

Publié : dim. 19/août/2012 22:07
par graph100
ca me fait la même chose avec ma razer.
merci pour la solution ;)

Re: [RESOLVED]2D ExamineMouse() SACCADE

Publié : jeu. 23/août/2012 12:00
par blendman
merci pour l'astuce.
Mais c'est valable ce problème de souris qui saccade en fullscreen ?

Re: [RESOLVED]2D ExamineMouse() SACCADE

Publié : jeu. 23/août/2012 22:54
par Atlante
blendman a écrit :merci pour l'astuce.
Mais c'est valable ce problème de souris qui saccade en fullscreen ?
Oui regarde le premier code, c'est du full screen ;) Et même en windows screen.
Je viens de re tester ça ma fait planter à moitié windows juste l’exemple mouse.

Re: [RESOLVED]2D ExamineMouse() SACCADE

Publié : ven. 24/août/2012 11:37
par blendman
ok. Donc la solution (à retoucher pour le fullscreen) fonctionne dans les 2 cas j'imagine ;).