Problem mit Mausabfrage in einer Funktion

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Vindur

Betreff: Problem mit Mausabfrage in einer Funktion

BeitragDi, Dez 02, 2008 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin moin,
Wie im Titel erwähnt habe ich ein Problem mit der Mausabfrage.
Undzwar soll ein mausklick in einem von 2 Modi abgefragt werden und an der mausposition ein objekt platziert werden. An sich klappt das auch, aber wenn ich im ersten Modus (dem wo nichts platziert werden soll) die entsprechende Maustaste drücke und dann den Modus in den zweiten wechsle, dann wird automatisch ein Objekt platziert.
Nun die Frage: Wie kann ich dafür sorgen, dass ein Mausklick erst dann gültig ist, wenn ich im zweiten Modus bin bzw. die entsprechende Funktion ausgeführt wird?

Der Code dazu:
Code: [AUSKLAPPEN]

Function Construction_mode()

      CameraPick(cam,MouseX(),MouseY())
      mxpick=PickedX()
      mzpick=PickedZ()
      mypick=PickedY()
      
 PositionEntity Fence,Int(mxpick/MeshWidth#(Fence))*MeshWidth#(Fence),mypick,Int(mzpick/MeshWidth#(Fence))*MeshWidth(Fence)

   
   If MouseHit(2)
      TurnEntity Fence,0,90,0
   EndIf
   If MouseHit(1)
      Fence_copy = CopyEntity(Fence)
      PositionEntity Fence_copy,Int(mxpick/MeshWidth#(Fence))*MeshWidth#(Fence),mypick,Int(mzpick/MeshWidth#(Fence))*MeshWidth#(Fence)
   EndIf

End Function



Hoffe jemand kennt eine Lösung.
Vielen dank im vorraus!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Dez 02, 2008 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
In der ersten Funktion dann mit FlushMouse den Mauspuffer löschen.

Beachte auch, dass ein geklickter MouseHit so lange im Puffer bleibt, bis dieser abgerufen wird. Bei beispielsweise Mehrfachabfragen ist es zwingend notwendig den Wert dann zwischen zu speichern.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

TimBo

BeitragDi, Dez 02, 2008 22:44
Antworten mit Zitat
Benutzer-Profile anzeigen
was hectic damit sagen will ist.

mach sowas in die Main Schleife

mx = mousex()
my = mousey()

mh1 = mousehit(1)
mh2 = mousehit(2)

und dann mache nie mehr if mousehit(1) oder so sondern immer if mh1

hoffe das war verständlich

mfg
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

Vindur

BeitragDi, Dez 02, 2008 23:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank an euch beide^^
die FlushMouse Funktion muss ich wohl übersehen haben. Da ich den Quelltext der Hauptschleife sowieso nochmal übersichtlicher schreiben muss, werde ich auch direkt deinen Hinweis berücksichtigen TimBo.
Funktioniert bisher einwandfrei, sowie ich FlushMouse verwende.
nochmals vielen Dank Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group