Seite 1 von 2
Muas "Hiden" ?
Verfasst: 16.01.2005 17:45
von nicolaus
Hi Screen und Sprite Freaks
habe mal ne frage zu nem prob mit der maus.
wie kann ich es anstellen das die maus nach ner bestimmten zeit (z.b. 5 sec) ohne benutzung (also ohne bewegen oder drücken eines buttons der maus) der mauszeiger verschwindet (nich mehr gezeigt wird) und wenn die maus bewegt wird oder irgendein event durch die maus verursacht wurde der mauszeiger wieder erscheint?
Danke euch schon mal.
Verfasst: 16.01.2005 18:16
von Kaeru Gaman
dass ist eher eine logik- und algorythmusfrage.
(ich gehe mal vom Screen-Mode aus, da du ja nicht nach Win-Api gefragt hast

)
- du richtest eine überwachungsvariable ein, die bei jeder mausbewegung auf nen maximalwert gesetzt wird.
- diese überwachungsvariable zählst du in jedem frame um 1 runter, wenn sie >0 ist.
- solange sie >0 ist, zeigst du den mousepointer an.
Code: Alles auswählen
Repeat ;Hauptschleife
ExamineMouse() ; Hast du ja sowieso drin...
...
If MouseDeltaX()<>0 Or MouseDeltaY()<>0
Mouse_Hide = 250 ; als bsp: 5sec bei 50fps
EndIf
If Mouse_Hide > 0
Mouse_Hide - 1
DisplayTransparentSprite(MousePointer, X, Y)
EndIf
...
Until ...Hauptschleifenende...
nur mal als snippet zur verdeutlichung.
soll auch durch clicken der Mousebuttons reaktiviert werden, musst du
1)
alle buttons auch abfragen und dort die Variable auf MAX setzen,
2) sicherstellen, dass der click, der der reaktivierung dient,
nicht ausgeführt wird,
damit der User nicht aus versehen ne funktion auslöst, wenn er nur reaktivieren will.
aber wer tut das schon, IMHO reicht die abfrage der bewegung völlig

Verfasst: 16.01.2005 18:29
von nicolaus
ich danke dir erst mal für das beispiel und doch ich brauch das mit den maustasten auch denn ich brauch das nich für ein game sondern wenn ein video im fullscreen abgespielt wird und die maus nich bewegt wird soll sie nach z.b. 5 sec verschwinden und wenn dann z.b. der rechte mausbutton gedrückt wird soll ein popupmenu aufgehen und da brauche ich ja die maus wieder

Verfasst: 16.01.2005 18:53
von Kaeru Gaman
das ist vergleichsweise einfach:
die rechte maustaste frags du ja sowieso ab, also musst du nur nach dem
If MouseButton(2)
ebenfalls ein
Mouse_Hide = 250
einfügen.
aber:
... fullscreen ... popupmenu ...
also doch kein Screen-Modus ????
Verfasst: 16.01.2005 19:04
von nicolaus
doch doch is schon Screen-Mode
Beispiel:
Code: Alles auswählen
OpenWindow(#MovieWindow, 0, 0, GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN), #PB_Window_BorderLess, "WindowTitel")
OpenWindowedScreen(WindowID(#MovieWindow), 0, 0, GetSystemMetrics_(#SM_CXSCREEN),Int((MovieHeight() / MovieWidth()) * GetSystemMetrics_(#SM_CXSCREEN)), 1, 0, 0)
Verfasst: 16.01.2005 19:26
von nicolaus
gibt es denn eigentlich auch ne möglichkeit die maus per API zu hiden?
Verfasst: 16.01.2005 19:46
von Kaeru Gaman
mit OpenWindowedScreen ist es kein Screen-Mode.
hier musst du über API arbeiten, ich weiss nicht, ob die Mouse-Befehle,
die für Screen ausgelegt sind, überhaupt hier arbeiten.
sorry, mit API kenn ich mich nicht aus.
musst die frage nochmal im API-forum stellen, oder bitte nen Moderator, diesen Thread zu verschieben...
das hiden funktioniert dann anders, die zeitabfrage würde ich dann auch über API machen, etc.
Verfasst: 16.01.2005 19:57
von traumatic
nicolaus hat geschrieben:gibt es denn eigentlich auch ne möglichkeit die maus per API zu hiden?
Meinst Du so?
ShowCursor_(#FALSE)
Verfasst: 16.01.2005 20:59
von bluejoke
ich denke, er meint es so, aber bei mir funktioniert das nicht.
Verfasst: 16.01.2005 21:24
von Zaphod
funktioniert bei mir, aber nur wenn der cursor über einem gui fenster ist...