Wirklich mysteriös .... *am kopf kratz*

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Blitzkrieg Bop

Betreff: Wirklich mysteriös .... *am kopf kratz*

BeitragMo, Apr 12, 2004 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi...
Habe inm einem editor 3 Buttons. Nun soll überprüft werden, was passiert wenn der Cursor über ihnen ist, und man dann di linke maustaste klickt.
Komischerweise geht das immer nur bei dem ersten Button, also immer nur bei der ersten
Code: [AUSKLAPPEN]

If imagesoverlap(cursor,x_maus,y_maus,[button],[x_button],[y_button])


in diesem fall ist das erste Speichern. DAs geht wunderbar, aber der Rest nicht.

Code: [AUSKLAPPEN]

;Speichern:
If ImagesOverlap(cursor,x_maus,y_maus,b3,x_speichern,y_speichern) And MouseHit(1)
save()
EndIf

;Ladem:
If ImagesOverlap(cursor,x_maus,y_maus,b2,x_laden,y_laden) And MouseHit(1)
End
EndIf

;Ladem:
If ImagesOverlap(cursor,x_maus,y_maus,b6,x_beenden,y_beenden) And MouseHit(1)
End
EndIf


Setzt man nun für Mousehit(1) bei der zweiten abfrage Mousehit(2) ein, geht das! Aber es soll ja lles mit der linken Taste gehn.

Ansonsten habe ich im Editor ein Flushmouse was am Ende der Hauptschleife vor dem Flip steht. Rolling Eyes Twisted Evil
~ Hey Ho Let's Go ~

lucifer

BeitragMo, Apr 12, 2004 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte das Problem mit keyhit(). Ich hab das dann so gemacht:
Code: [AUSKLAPPEN]

If moushit(1)
If ImagesOverlap(cursor,x_maus,y_maus,b3,x_speichern,y_speichern)
save()
EndIf

;Ladem:
If ImagesOverlap(cursor,x_maus,y_maus,b2,x_laden,y_laden) And MouseHit(1)
End
EndIf

;Ladem:
If ImagesOverlap(cursor,x_maus,y_maus,b6,x_beenden,y_beenden) And MouseHit(1)
End
EndIf
End if

Bei mir hat es dann gelklappt.
 

Cloud

BeitragMo, Apr 12, 2004 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]


MHit = MouseHit(1)

;Speichern:
If ImagesOverlap(cursor,x_maus,y_maus,b3,x_speichern,y_speichern) And MHit = 1
save()
EndIf

;Ladem:
If ImagesOverlap(cursor,x_maus,y_maus,b2,x_laden,y_laden) And MHit = 1
End
EndIf

;Ladem:
If ImagesOverlap(cursor,x_maus,y_maus,b6,x_beenden,y_beenden) And MHit = 1
End
EndIf



Probier das mal so, sollte gehen
Duron 1200 | 256 RAM | Geforce 2 TI
 

Blitzkrieg Bop

BeitragMo, Apr 12, 2004 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
danke cloud, es geht 8)
ist ech komischer fehler ...
~ Hey Ho Let's Go ~
 

Blitzkrieg Bop

BeitragMo, Apr 12, 2004 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm....hab nun folgendes:

If MouseHit(1)
Mhit = 1
EndIf


das klapt auch gut, aber wenn man nun im mapeditor rum malt, und dann über die buttons geht, geschehen die sachen der buttons automatisch.
wie kann ich das nun eingrenzen ..... Rolling Eyes
~ Hey Ho Let's Go ~
 

Blitzkrieg Bop

BeitragMo, Apr 12, 2004 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
hab schon die lösung! einfach den bereich der buttons eingrenzen:

Code: [AUSKLAPPEN]

If MouseHit(1)
If MouseX() > 919 And MouseX() < 1011
Mhit = 1
EndIf
EndIf


als beispiel ;D
~ Hey Ho Let's Go ~

Hubsi

BeitragMo, Apr 12, 2004 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Lass es halt wie er es geschrieben hat:
Code: [AUSKLAPPEN]
MHit=MouseHit(1)
Dann geht das auch. Ein komischer Fehler ist das nicht, weil MouseHit() die Anzahl der Klicks zurückgibt und somit nach deren Abfrage natürlich 0 ist.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

dubitat

BeitragMo, Apr 12, 2004 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
@ hubsi
da hast du wohl was falsch verstanden... er will ja eine aktion immer nur dann wenn mousehit = 1 ist...
Erare humanum est - Irren ist Menschlich

Hubsi

BeitragMo, Apr 12, 2004 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau das macht ja der Code von Cloud Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

regaa

BeitragMo, Apr 12, 2004 22:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich hab das bei mir mit dem selbstauslösenden Buttons so gelöst. Hab 2 Funktionen geschrieben für Mousehit und mousedown.

Am Anfang deiner Hauptschleife schreibst du:
Code: [AUSKLAPPEN]

If MouseHit(1) Then mouse_hit_1=True : mouse_down_1=MilliSecs()
If MouseHit(2) Then mouse_hit_2=True : mouse_down_2=MilliSecs()

und am Ende:
Code: [AUSKLAPPEN]

mouse_hit_1=False
mouse_hit_2=False

(Natürlich könnte man auch das in eine Funktion packen)


und die Funktionen dazu sehen so aus:

Code: [AUSKLAPPEN]

Function Mouse_Hit(taste)
   If taste=1
      
      If Mouse_hit_1=True Then mouse_hit_1=False : mouse_down_change=0 : Return(True)
   EndIf
   If taste=2
      If Mouse_hit_2=True Then mouse_hit_2=False : mouse_down_change=0 : Return(True)
   EndIf
   Return False
End Function

Function Mouse_Down(taste,verzoegerung=300)
   Local m_d_1, m_d_2

   If Mouse_Hit(1)
      mouse_down_change=0
   EndIf
      
   If MouseDown(1) Then m_d_1=True
   If MouseDown(2) Then m_d_2=True
   
   If taste=1
      If m_d_1 And (MilliSecs()-mouse_down_1>verzoegerung) And (mouse_down_change=0)
         Return True
      EndIf
      If Not MouseDown(1)
         mouse_down_1=MilliSecs()
         mouse_down_change=1
      EndIf
   Else If taste=2
      If m_d_2 And (MilliSecs()-mouse_down_2>verzoegerung)
         Return True
      EndIf
      If Not MouseDown(1)
         mouse_down_2=MilliSecs()
         mouse_down_change=2
      EndIf
   EndIf
   Return False
End Function


Damit kannst du dann sogar für Mousedown angeben nach wieviel ms die Funkion ein True liefern soll.


Dann kannst du halt ganz normal if Mouse_Hit(1) then...... benutzen.
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group