MouseHit

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

flexer94

Betreff: MouseHit

BeitragSa, Nov 21, 2009 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,

ich hab ein Problem mit dem Befehl "MouseHit(x)". Und zwar möchte ich ein Menü machen, indem man auf Schaltflächen (In meinem Fall Bilder Very Happy) klicken muss, um dorthin zu gelangen. Jetzt funktioniert aber eine Schaltfläche nicht, ich hab das Problem schon soweit eingegrenzt, dass es nur noch an MouseHit liegen kann. Mit MouseDown gehts, Mit MouseHit(x) für x>1 gehts auch, nur die linke Maustaste will bei dem einen Punkt nicht funktionieren, alle andren gehn.

Ist noch sehr unvollständig, vll. hilfts wenn ich den Code poste.

Code: [AUSKLAPPEN]



Graphics 1024,768,32,2
SetBuffer BackBuffer()

newgame = LoadImage("gfx\menu\newgame.png")
MidHandle newgame
options = LoadImage("gfx\menu\options.png")
MidHandle options
ende = LoadImage("gfx\menu\end.png")
MidHandle ende
pointer = LoadImage("gfx\menu\pointer.png")
MidHandle pointer
resolution = LoadImage("gfx\menu\resolution.png")
MidHandle resolution


HidePointer

;________MAIN MENU!!!!!!!!!!


While 1

.menu
m_X = MouseX()
m_Y = MouseY()

Cls

DrawImage newgame,500,200
DrawImage options,500,270
DrawImage ende,505,340
DrawImage pointer,m_X,m_Y

If ImagesCollide(pointer,m_X,m_Y - 30,0,ende,500,340,0) = 1 And MouseHit(1) Then End

If ImagesCollide(pointer,m_X,m_Y - 30,0,options,500,270,0) = 1 And MouseHit(1) Then

While 1
Cls
DrawImage resolution,450,200
Flip
Wend

EndIf


Flip

Wend

;___________END MENU!!!!!!!!!!


Type schuss
Field schuss_x
Field schuss_y
End Type


;_______MAIN LOOP!!!!



;_______BUILD - FUNCS AND SUBS


.options

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Nov 21, 2009 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Local MH1=MouseHit(1)

If MH1 Then UndAlleSoYeeaah

ComNik

BeitragSa, Nov 21, 2009 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu, mehrere Sachen.

1. Meide Goto. Benutze Funktionen.

2. Daraus folgert sich auch der Aufbau einer MainLoop
Code: [AUSKLAPPEN]

         While 'Abbruchsbedingung
              Cls     <--- NUR EINMAL

              'Code

              Flip   <--- auch nur einmal
          Wend
   


3. Wie schon geschrieben. Nur einmal Cls

4. Wenn du alle deine Bilder "midhandlen" willst, kannst du auch einfach AutoMidHandle(True) verwenden.

5. Zu deiner Frage:
Buttons solltest du nicht mit ImagesCollide() auf Kollision prüfen. Generell solltest du ImagesCollide() eher meiden. Prüf einfach die Koordinaten der Maus und ob sie auf dem Button liegen. Reicht an genauigkeit völlig aus.

6. Zu deiner Frage Teil 2:
MouseHit() benutzt eine Art Puffer um deine Mauseingaben zu prüfen. Es liefert meines Wissens nach nicht ob geklickt wurde sondern eben die Zahl der Klicks seit dem letzten Aufruf zurück.
Wie umgehst du das?

Einfach am anfang der Main Schleife einmal Code: [AUSKLAPPEN]
mh1 = MouseHit(1)
machen. Dann einfach immer auf mh1 anstatt auf MouseHit() prüfen.

lg
ComNik
WIP: Vorx.Engine
 

flexer94

BeitragSa, Nov 21, 2009 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok mit mh1 = MouseHit(1) gehts.

Danke für deine Tips Very Happy

Gruß
flexer

D2006

Administrator

BeitragSa, Nov 21, 2009 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Diese Frage hätte übrigens den Preis für die am Meisten gestellte Anfängerfrage verdient. Und daher will ich dich darüber informieren, dass du das Problem ganz schnell selbst hättest lösen können. Sei es über die Suchfunktion mit Hilfe der 100.000 anderen Themen mit diesem Problem oder via die FAQ, in der das Problem natürlich auch erläutert wird.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group