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.