Button wollen nich wie ich will
Übersicht

![]() |
BasatiBetreff: Button wollen nich wie ich will |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi!
also ich hab da ein menü gemacht und es sieht ganz groß aus, und auf den ersten knopf kann ich auch drücken und es passiert auch was! aba bei allen drei weiteren tut sich nix! wenn ich aba denn code für den ersten button auskommentiere klappt der darunter! mit anderen worten es klappt immer nur der oberste! und nebenbei weiter zwei fragen: warum funktioniert der cls befehl nicht im follbild modus? und hat jemand ne formel mit der man die grafiken variabel zu der auflösung anordnen kann? denn x_wert für die positionierung hab ich, aba denn rest krig ich nich raus! viele fragen!! ![]() Code: [AUSKLAPPEN] Global aufx=800 Global aufy=600 Graphics aufx,aufy, 32 SetBuffer BackBuffer() Cls ;---------------Images laden-------------- back=LoadImage("pics\back.jpg") maus=LoadImage("pics\maus.bmp") start=LoadImage("Pics\start.jpg") high=LoadImage("Pics\high.jpg") opti=LoadImage("Pics\opti.jpg") ende=LoadImage("pics\ende.jpg") ;---------------Menü schleife anfang-------------- Repeat Cls ;---------------Maus position-------------- mausx=MouseX() mausy=MouseY() ;---------------Buttons zeichnen-------------- DrawImage back, 0, 0 DrawImage start, aufx/2-100, 100 DrawImage opti, aufx/2-100, 208 DrawImage high, aufx/2-100, 316 DrawImage ende, aufx/2-100, 424 ;---------------Maus zeichnen-------------- DrawImage maus, mausx-16, mausy-16 ;---------------start button--------------- If MouseHit(1) And mausx>aufx/2-100 And mausx<aufx/2+100 And mausy>100 And mausy<175 Then Cls Print "START" WaitKey End EndIf ;---------------optionen button--------------- If MouseHit(1) And mausx>aufx/2-100 And mausx<aufx/2+100 And mausy>208 And mausy<283 Then Cls Print "OPTIONEN" WaitKey End EndIf ;---------------highscore button--------------- If MouseHit(1) And mausx>aufx/2-100 And mausx<aufx/2+100 And mausy>316 And mausy<391 Then Cls Print "HIGHSCORE" WaitKey End EndIf ;---------------ende button--------------- If MouseHit(1) And mausx>aufx/2-100 And mausx<aufx/2+100 And mausy>424 And mausy<499 Then Cls Print "Tschööööööööööö!" WaitKey End EndIf If KeyHit(1) Then End EndIf flip ;---------------Menü schleife ende-------------- Forever thx for help |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ganz einfach: du rufst MouseHit mehrmals auf!
Speicher seinen Wert am Anfang in einer Variable, und benutz diese in den IFs, schon geht alles. |
||
![]() |
Basati |
![]() Antworten mit Zitat ![]() |
---|---|---|
das musst du mir etwas genauer erklären!!
meinst du etwa so: if mousehit(1) then prüfe koordinaten ????? |
||
HW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Global aufx=800
Global aufy=600 Graphics aufx,aufy, 32 SetBuffer BackBuffer() ;---------------Images laden-------------- back=LoadImage("pics\back.jpg") maus=LoadImage("pics\maus.bmp") start=LoadImage("Pics\start.jpg") high=LoadImage("Pics\high.jpg") opti=LoadImage("Pics\opti.jpg") ende=LoadImage("pics\ende.jpg") ;---------------Menü schleife anfang-------------- Repeat Cls ;---------------Maus-------------- mausx=MouseX() mausy=MouseY() maushit=MouseHit(1) ;---------------Buttons zeichnen-------------- DrawImage back, 0, 0 DrawImage start, aufx/2-100, 100 DrawImage opti, aufx/2-100, 208 DrawImage high, aufx/2-100, 316 DrawImage ende, aufx/2-100, 424 ;---------------Maus zeichnen-------------- DrawImage maus, mausx, mausy ;---------------start button--------------- If maushit And ImageRectOverlap(start,aufx/2-100,100,MouseX(),MouseY(),1,1) Cls Print "START" WaitKey() End EndIf ;---------------optionen button--------------- If maushit And ImageRectOverlap(opti,aufx/2-100,208,MouseX(),MouseY(),1,1) Cls Print "OPTIONEN" WaitKey() End EndIf ;---------------highscore button--------------- If maushit And ImageRectOverlap(high,aufx/2-100,316,MouseX(),MouseY(),1,1) Cls Print "HIGHSCORE" WaitKey() End EndIf ;---------------ende button--------------- If maushit And ImageRectOverlap(ende,aufx/2-100,424,MouseX(),MouseY(),1,1) Cls Print "Tschööööööööööö!" WaitKey() End EndIf Flip ;---------------Menü schleife ende-------------- Until KeyHit(1) End Hier dein Code, in modifizierter Form. Habe ihn aber nicht getestet, da ich die Bilder nicht habe. Noch ein Tipp: Du solltest beim Zeichenbefehl für die Maus nicht darauf achten, dass der Zeiger in der Mitte gemalt wird. Schließlich hat man einen Pfeil, dessen Spitze in der linken oberen Ecke (da, wo gezeichnet wird) auf das zeigt, was geprüft werden soll. Anders ist es natürlich, wenn du ein Fadenkreuz o.Ä. hast. Aber wie du das mit den Grafikvariablen meinst, verstehe ich nicht. |
||
![]() |
Basati |
![]() Antworten mit Zitat ![]() |
---|---|---|
cool! danke!
damit is das erste problem gelöst! mkay das mit der formel is etwas schwer aba egal! das mit der formel is so das wenn ich die buttons mit zahlen festlege wie oben dann kann ich nich die auflösung andern, weil dann die buttons nich mehr in der mitte des bildschirms sind sondern halt an denn festen positionen! ps: der mauszeiger ist ein fadenkreutz!!! ![]() |
||
- Zuletzt bearbeitet von Basati am Fr, Feb 03, 2006 20:17, insgesamt einmal bearbeitet
HW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich sollte dir besser noch sagen, was die wichtigste Änderung ist: Am Anfang der Schleife wird in einer Variable (maushit) gespeichert, ob die Maustaste gedrückt wurde. Dann wird bei den Buttons jeweils geprüft, ob diese Variable "Wahr" oder "Falsch" aussagt.
Das Problem lag daran, dass Mousehit(button), Keyhit(scancode) und Joyhit(button) zurückgeben, wie oft eine Taste seit dem letzten Aufruf der jeweiligen Funktion gedrückt wurde. Bei einer Schleife muss/sollte man das in einer Variable speichern, da sonst geprüft wird, ob nach dem vorherigen Mousehit(1) schon die Taste gedrückt wurde. Was die Auflösung angeht: Bei den X-Werten hast du es ja schon richtig. Du musst es nur noch in die Y-Werte übertragen. Und wegen dem Mauszeigerfadenkreuz: Nach dem Befehl für das Laden des Bildes gibst du´ Code: [AUSKLAPPEN] MidHandle maus
ein. Dann wird das Bild automatisch in der Mitte gezeichnet und du kannst den Code von oben übernehmen. |
||
Blackdragon1989 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich hab keine Antwort auf die Frage habe selber eine...
@HW Ich habe das auch mal probiert mit dem maushit = MouseHit(1) aber bei mir geht das nich kann mir einer sagen was ich da falsch gemacht habe ?Hier der Code Code: [AUSKLAPPEN] Graphics 640,480,16,1
SetBuffer BackBuffer() HidePointer ;Variabeln laden ;Bilder laden Global Fadenkreuz = LoadImage("Fadenkreuz.bmp") ;Fadenkreuz MaskImage Fadenkreuz ,0,0,255 ;Fadenkreuz Global Menübg = LoadImage("Menü.bmp") ;Menü Hintergrund Global Button_Start = LoadImage("start.bmp") ;Start Button im Menü Global Button_Steuerung = LoadImage("steuerung.bmp");Steuerung Button im Menü Global Button_Beenden = LoadImage("beenden.bmp") ;Beenden Button im Menü Global Panzer = LoadImage("Panzer.bmp") ;Panzer MaskImage Panzer,0,0,255 ;Panzer Global Flugzeug = LoadImage("Flugzeug.bmp") ;Flugzeug MaskImage Flugzeug,0,0,255 ;Flugzeug Global Pause = LoadImage("Pause.bmp") ;Pause MaskImage Pause,0,0,255 ;Pause Global Spielbg = LoadImage("background.bmp") ;Hintergrund im Spiel Global Steuerung = LoadImage("Ctrl.bmp") ;Steuerungsbild ;Bilder laden ende Mx = MouseX() - 25 My = MouseY() - 25 maushit = MouseHit(1) Panzer_X = 640 Panzer_Y = 450 Flugzeug_X = 640 Flugzeug_Y = 100 ;Variabeln laden ende Menü() Function Menü() While Not KeyHit(1) Cls ;Bildschirm löschen TileImage Menübg ;Menübild malen DrawImage Button_Start,220,200 ;Start Button malen DrawImage Button_Steuerung,220,250 ;Steuerung Button malen DrawImage Button_Beenden ,220,300 ;Beenden Button malen DrawImage Fadenkreuz,MouseX()-25,MouseY()-25 ;Fadenkreuz malen ;Abfrage Start If ImagesCollide(Fadenkreuz,MouseX()-25,MouseY()-25,0, Button_Start,220,200,0) Then If maushit Then Exit EndIf EndIf ;Abfrage Steuerung If ImagesCollide(Fadenkreuz,MouseX()-25,MouseY()-25,0, Button_Steuerung,220,250,0) Then If maushit Then Steuerung() EndIf EndIf ;Abfrage Beenden If ImagesCollide(Fadenkreuz,MouseX()-25,MouseY()-25,0, Button_Beenden,220,300,0) Then If maushit Then Exit EndIf EndIf Flip ;Bildschirm Flippen Wend End Function Function Spiel() End Function Function Steuerung() Menü_an = 0 Cls TileImage Steuerung End Function |
||
User posted image |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde die Variable nicht am Anfang des Programms sondern immer in der Hauptschleife mit MouseHit füttern... ![]() |
||
Blackdragon1989 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke schön ! ![]() |
||
User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group