Seite 2 von 2

Verfasst: 15.05.2005 02:20
von zigapeda
Ein Bug: Die Maus kann man nur in dem feld bewegen wo das spiel ist, auch wenn das spielfenster nicht aktiv ist also wenn ich eine andere anwendung in den vordergrund hohle (Alt+Tab). Kann man das vieleicht beheben?

Verfasst: 15.05.2005 02:27
von MVXA
>Kann man das vieleicht beheben?
Nö. Das ist ein Nachteil, wenn man in seinen Spielen die Maus mit den PB eigenen Funktionen benutzt.

P.S. komm mal in den IRC channel :twisted:.

Verfasst: 15.05.2005 03:37
von Deeem2031
Müsste doch eigentlich mit ReleaseMouse() gehen oder?

Die Grafik ist übrigens top, allerdings könnte man die Fläche vergrößern in der man eine Strich malen kann.

Verfasst: 15.05.2005 12:49
von diGGa
Deeem2031 hat geschrieben:Müsste doch eigentlich mit ReleaseMouse() gehen oder?

Die Grafik ist übrigens top, allerdings könnte man die Fläche vergrößern in der man eine Strich malen kann.
danke

ja das mit der maus is dumm... hab hier schon nen thread offen. welche funktionen für maus kann ich benutzen wobei ich trotzdem meinen eigenen zeiger nutzen kann etc? (und am besten wo ich das fenster noch verschieben kann)

Verfasst: 15.05.2005 14:49
von Danilo
diGGa hat geschrieben:ja das mit der maus is dumm... hab hier schon nen thread offen. welche funktionen für maus kann ich benutzen wobei ich trotzdem meinen eigenen zeiger nutzen kann etc? (und am besten wo ich das fenster noch verschieben kann)
Probier mal einen Weg der vom Prinzip her ungefähr in diese
Richtung geht:

Code: Alles auswählen

;
; WindowedScreen Mouse Capture Test
;
; by Danilo, 2005/05/15
;
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0
  MessageRequester("ERROR","Cant initialize game engine !"):End
EndIf

#Win0_Name     = "MyGame"
#Win0_Flags    = #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible
#Win0_Width    = 640
#Win0_Height   = 480

#Screen_Width  = 640
#Screen_Height = 480

If OpenWindow(0,0,0,#Win0_Width,#Win0_Height,#Win0_Flags,#Win0_Name)
  If OpenWindowedScreen(WindowID(0),0,0,#Screen_Width,#Screen_Height,0,0,0)=0
    MessageRequester("ERROR","Cant open screen !"):End
  EndIf

  If CreateSprite(0,16,16)=0
    MessageRequester("ERROR","Cant create sprite !"):End
  EndIf
  
  If StartDrawing(SpriteOutput(0))
    LineXY(7,0,7,15,RGB($FF,$FF,$00))
    LineXY(0,7,15,7,RGB($FF,$FF,$00))
    StopDrawing()
  EndIf

  HideWindow(0,0)
  
  Repeat
    If GetFocus_() = WindowID(0) ; IsScreenActive()
      WindowMouseX = WindowMouseX()
      WindowMouseY = WindowMouseY()
      If WindowMouseX>0 And WindowMouseX<#Screen_Width-1 And WindowMouseY>0 And WindowMouseY<#Screen_Height-1
        ExamineMouse()
        If captured = 0
          ReleaseMouse(0)
          captured = 1
          MouseLocate(WindowMouseX,WindowMouseY)
        EndIf
      Else
        ReleaseMouse(1)
        captured = 0
      EndIf
    Else
      ReleaseMouse(1)
      captured = 0
    EndIf

    ClearScreen(0,0,0)
    If captured
      DisplayTransparentSprite(0,MouseX()-8,MouseY()-8)
      ;DisplayTransparentSprite(0,WindowMouseX-8,WindowMouseY-8)
    EndIf
    If StartDrawing(ScreenOutput())
      f.f + 0.05
      Circle(#Screen_Width/2,#Screen_Height/2+Sin(f)*100,10,RGB($80,$80,$80))
      Circle(#Screen_Width/2+Sin( f)*50,#Screen_Height/2+Cos(f*0.5)*200,10,RGB($80,$80,$80))
      Circle(#Screen_Width/2+Sin(-f)*50,#Screen_Height/2+Cos(f*0.5)*200,10,RGB($80,$80,$80))
      StopDrawing()
    EndIf
    FlipBuffers()

    Event = WindowEvent()
    While Event
      Select Event
        Case #PB_Event_CloseWindow
          Quit = 1
      EndSelect
      Event = WindowEvent()
    Wend
    Delay(10)
  Until Quit

  ; crash on exit? hmm..
  ReleaseMouse(1)
  While WindowEvent():Wend
  CloseScreen()
  While WindowEvent():Wend

Else
  MessageRequester("ERROR","Cant open window !"):End
EndIf
Mit Debugger angeschalten ist es hier manchmal gecrasht
nachdem ich das Fenster geschlossen hatte. Kein Ahnung
wieso, aber ohne Debugger scheint es zu gehen.

Ist wie gesagt nur ein Test. Wie Du es genau in Deinem Game
haben willst mußt Du mal probieren - gibt da versch. Lösungsansätze.

Verfasst: 15.05.2005 15:18
von zigapeda
MVXA hat geschrieben:>Kann man das vieleicht beheben?
Nö. Das ist ein Nachteil, wenn man in seinen Spielen die Maus mit den PB eigenen Funktionen benutzt.

P.S. komm mal in den IRC channel :twisted:.
ich hab keinen irc clienten und mein eigener funktioniert noch nicht.
Das java applet hat einen fehler also kann ich nicht kommen.

Verfasst: 15.05.2005 15:33
von diGGa

Code: Alles auswählen

Procedure MouseStatus()
       If GetFocus_() = WindowID()
              If WindowMouseX()>0 And WindowMouseX()<600-1 And WindowMouseY()>0 And WindowMouseY()<400-1
                     ExamineMouse()   
                     If captured = 0
                            ReleaseMouse(0)
                            captured = 1
                            MouseLocate(WindowMouseX(),WindowMouseY())
                     EndIf
              Else
                     ReleaseMouse(1)
                     captured = 0
              EndIf
       Else
              ReleaseMouse(1)
              captured = 0
       EndIf
EndProcedure
das funzt gut :) hab keine probleme bei exit.. liegt vll daran das ich n eigenen button hab und keinen system.button

wo wir grad dabei sind ;) gibts ne möglichkeit nur den minimize button einzuabauen ohne den close?