MindHunter
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
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping

dankeDeeem2031 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.
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 diesediGGa 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)
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
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
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
ich hab keinen irc clienten und mein eigener funktioniert noch nicht.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.
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
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping

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

wo wir grad dabei sind
