MindHunter

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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?
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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:.
Bild
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
diGGa
Beiträge: 249
Registriert: 01.04.2005 11:00
Kontaktdaten:

Beitrag 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)
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag 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.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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.
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
diGGa
Beiträge: 249
Registriert: 01.04.2005 11:00
Kontaktdaten:

Beitrag 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?
Antworten