Wechsel des Hintergrunds durch Button oder ähnliches
Übersicht

mmsm1985Betreff: Wechsel des Hintergrunds durch Button oder ähnliches |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann man einen oder mehrere Bereiche "anklickbar" machen, sodass das Programm ein anderen Hintergrund öffnet, wenn man diesen Bereich anklickt???
Danke im voraus |
||
![]() |
Vincent |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja.
Wenn ein Mausbutton gedrückt wurde (z.B. Mousehit( 1 ) ) testest du, ob die Mauskoordinaten über dem Button sind ( MouseX() , Mousey() ). |
||
Gott ist nicht mit uns ... weil er mit Idioten keine Gnade kennt ! |
Lastsamurai |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Einfach Abfragen ob die Maus auf dem gewünschten Bild/Bereich ist und eine Maustaste gedrückt wurde und dann das alte Bild löschen und den neuen Hintergrund malen...
Guck dir die Befehle MouseX(), MouseY(), Moushit(), Mousedown an. |
||
mmsm1985 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, nur wie fragt man solche Sachen ab.
'Tschuldigung, nur ich bin blutiger Anfänger. |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lastsamurai hat Folgendes geschrieben: Guck dir die Befehle MouseX(), MouseY(), Moushit(), Mousedown an.
Damit. Auf www.blitzbase.de die Onlinehilfe runterladen und forschen bis die Tasten brechen ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
PowerProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier ist mal ein Beispiel:
Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() SeedRnd MilliSecs() ; Startfarben Area_R = 0 Area_G = 0 Area_B = 255 Repeat ;Rahmen Color 128,128,128 Rect 199,199,402,202 ; Bereich einzeichnen Color Area_R, Area_G, Area_B Rect 200,200,400,200 Flip ;Abfrage mHit = MouseHit(1) mX = MouseX() mY = MouseY() If mHit = 1 And mX >= 200 And mX <= 600 And mY >= 200 And mY <= 400 Then Area_R = Rand(255) Area_G = Rand(255) Area_B = Rand(255) EndIf Until KeyHit(1) End |
||
mmsm1985Betreff: neues problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe jetzt ein neues Problem.
Mein Hintergrund wechselt zwar. Geht aber wieder sofort zurück zum Ursprünglichen Hintergrund. Dies soll aber nicht passieren.Es soll im neuen Menu bleiben. quellcode Code: [AUSKLAPPEN] Global gfxhauptmenu = LoadImage("gfx\hauptmenu.jpg");Hauptmenu Grafik laden Global gfxcursor = LoadImage("gfx\cursor.jpg") ;Cursor laden(ordentlichen besorgen) Global gfxhilfe = LoadImage("gfx\hilfe.jpg") ;Hilfe laden(Bilddatei schreiben) Repeat Flip TileBlock gfxhauptmenu ; Hintergrundgrafik zeichnen mx = MouseX() my = MouseY() mhit = MouseHit(1) DrawImage gfxcursor, mx , my ;Mauszeiger zeichnen If mhit = 1 And mX >= 200 And mX <= 600 And mY >= 200 And mY <= 400 Then TileBlock gfxhilfe End If If KeyHit(1) Then Exit Forever |
||
![]() |
Hagbard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es ist so, dass du da eine Variable hast, mhit, die True ist, wenn du mit der maus klickst, aber auch nur dann, denn das hast du so festgelegt...
Eine Möglichkeit ist, dass du, wenn du mit der Maus klickst, eine andere Variable ("hilfe_anzeigen") auf True setzt...diese bleibt dann auch auf True, solange bis vielleicht ein anderer Button angeklickt wurde. Später fragst du ab, was passieren soll, wenn diese Variable True ist. ZB die Grafik zeichnen... Code: [AUSKLAPPEN] Global gfxhauptmenu = LoadImage("gfx\hauptmenu.jpg");Hauptmenu Grafik laden Global gfxcursor = LoadImage("gfx\cursor.jpg") ;Cursor laden(ordentlichen besorgen) Global gfxhilfe = LoadImage("gfx\hilfe.jpg") ;Hilfe laden(Bilddatei schreiben) Repeat Flip TileBlock gfxhauptmenu ; Hintergrundgrafik zeichnen mx = MouseX() my = MouseY() mhit = MouseHit(1) DrawImage gfxcursor, mx , my ;Mauszeiger zeichnen If mhit = 1 And mX >= 200 And mX <= 600 And mY >= 200 And mY <= 400 Then hilfe_anzeigen = 1 End If If hilfe_anzeigen = 1 Then DrawImage gfxhilfe, X, Y EndIF If KeyHit(1) Then Exit Forever |
||
- Zuletzt bearbeitet von Hagbard am Fr, Jun 09, 2006 17:44, insgesamt einmal bearbeitet
mmsm1985 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke | ||
mmsm1985 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Leider muss ich schon wieder nerven ![]() Ich hocke jetzt schon wieder total lange an ein Problem was ich nicht selbst gelöst krieg.Und zwar versteh ich jetzt wie man zwischen zwei Bilder hin un her spring(durch einen Button). Ich komm jetzt vom Hauptmenu in das Hilfemenu und zurück. Das ganze geht aber nur einmal. Es soll aber beliebig oft möglich sein hin und her zu schalten. Code: [AUSKLAPPEN] If mhit = 1 And mX >= 200 And mX <= 599 And mY >= 412 And mY <= 458 Then hilfe_anzeigen = 1 End If If hilfe_anzeigen = 1 Then TileBlock gfxhilfe DrawImage gfxcursor, mx , my EndIf If hilfe_anzeigen = 1 And mhit = 1 And mX >= 292 And mX <= 448 And mY >= 542 And mY <= 595 Then hilfebeenden = 1 EndIf If hilfebeenden = 1 Then TileBlock gfxhauptmenu DrawImage gfxcursor, mx, my EndIf |
||
![]() |
ChaosCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier erstmal, so wie ich das jetzt vertanden hab ![]() Code: [AUSKLAPPEN] If mhit = 1 And mX >= 200 And mX <= 599 And mY >= 412 And mY <= 458 Then hilfe_anzeigen = 1 End If If hilfe_anzeigen = 1 Then TileBlock gfxhilfe DrawImage gfxcursor, mx , my else TileBlock gfxhauptmenu DrawImage gfxcursor, mx, my EndIf If hilfe_anzeigen = 1 And mhit = 1 And mX >= 292 And mX <= 448 And mY >= 542 And mY <= 595 Then hilfeanzeigen=0 EndIf Ich würd dir aber vorschlagen, weil du ja warscheinlich nich nur ein anderes menü machen wirst wie hilfe, z.B. unteranderem optionen, was weiß ich, würde ich dir folgendes vorschlagen: Code: [AUSKLAPPEN] If mhit = 1 if mX >= 200 And mX <= 599 And mY >= 412 And mY <= 458 Then menu=1 if mX >= 292 And mX <= 448 And mY >= 542 And mY <= 595 then menu=0 End If if menu=0 TileBlock gfxhauptmenu DrawImage gfxcursor, mx, my elseIf menu =1 TileBlock gfxhilfe DrawImage gfxcursor, mx , my ;elseif menu=2 then ; bla bla EndIf MfG ChAoSDrAgOn PS: Pseudocode, ich sag nich, dass es funktioniert(nich getestet) ![]() |
||
Projekte: Geolaria | aNemy
Webseite: chaosspace.de |
mmsm1985 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Danke. Es funktionukelt. Deine letzte Variante ist echt vorteilhafter. | ||
icestorm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da du den gfxcursor in jeder Bedingung deiner If-Anweisung zeichnest, kannst du ihn auch gleich außerhalb zeichnen lassen, das erspart ein paar Zeilen Code ![]() Code: [AUSKLAPPEN] If mhit = 1
if mX >= 200 And mX <= 599 And mY >= 412 And mY <= 458 Then menu=1 if mX >= 292 And mX <= 448 And mY >= 542 And mY <= 595 then menu=0 End If if menu=0 TileBlock gfxhauptmenu elseIf menu =1 TileBlock gfxhilfe ;elseif menu=2 then ; bla bla EndIf DrawImage gfxcursor, mX, mY Sollte dann genauso funktionieren und übersichtlicher sein! |
||
mmsm1985 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh Danke. | ||
mmsm1985 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich komm mir zwar schon blöd vor, aber ich brauche eure Hilfe.
Hab ja aber schon einiges gelernt. Hier mein neues Problem: Ich habe jetzt alle meine Buttons, leider bestehen diese Buttons in allen Fenster(hauptmenu,otionen,hilfe und so weiter).So kann ich in der hilfe aufeinmal in die Optionen, obwohl dieser Button nicht exestieren soll. Ich weiß das ich in der if-then Konstruktion noch was hinzufügen muss.ich weiß nur nicht wie. Hoffe ich habe es verständlich erklärt. Code: [AUSKLAPPEN] If mhit = 1 If mX >= 200 And mX <= 599 And mY >= 412 And mY <= 458 Then menu= 1;(Hilfe)Buttonbegrenzung und If mX >= 281 And mX <= 448 And mY >= 542 And mY <= 595 Then menu= 0;(Hauptmenu)Menuzuordnung If mx >= 200 And mx <= 599 And my >= 475 And my <= 521 Then menu= 2;(Spiel Verlassen) If mx >= 200 And mx <= 598 And my >= 200 And my <= 248 Then menu= 3;(Spiel Starten) If mx >= 200 And mx <= 598 And my >= 270 And my <= 319 Then menu= 4;(Spiel Laden) If mx >= 200 And mx <= 598 And my >= 345 And my <= 394 Then menu= 5;(Optionen) End If If menu=0 Then;Wenn der und der Button gedrückt wird, dann passiert das und das. TileBlock gfxhauptmenu ElseIf menu = 1 Then TileBlock gfxhilfe ElseIf menu = 2 Then Exit EndIf DrawImage gfxcursor, mX, mY |
||
icestorm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich verstehe jetzt nicht ganz, was du meinst, ist der Optionen Button noch da, im Hilfe-Menu?
Ist das der ganze Code für Menu 1? Ich glaube aber, ich weiß das Problem, der ganze Code for dem ElseIf für Menu 1 ist selber in keiner Abfrage, das heißt bei jedem Schleifendurchlauf wird auch geprüft, ob irgendwo hingeklickt wird. Gib diesen Code: Code: [AUSKLAPPEN] If mhit = 1
If mX >= 200 And mX <= 599 And mY >= 412 And mY <= 458 Then menu= 1;(Hilfe)Buttonbegrenzung und If mX >= 281 And mX <= 448 And mY >= 542 And mY <= 595 Then menu= 0;(Hauptmenu)Menuzuordnung If mx >= 200 And mx <= 599 And my >= 475 And my <= 521 Then menu= 2;(Spiel Verlassen) If mx >= 200 And mx <= 598 And my >= 200 And my <= 248 Then menu= 3;(Spiel Starten) If mx >= 200 And mx <= 598 And my >= 270 And my <= 319 Then menu= 4;(Spiel Laden) If mx >= 200 And mx <= 598 And my >= 345 And my <= 394 Then menu= 5;(Optionen) End If Einfach zu dem If menu=0 ... dazu! Also dann ca so: Code: [AUSKLAPPEN] If menu=0 Then;Wenn der und der Button gedrückt wird, dann passiert das und das. TileBlock gfxhauptmenu If mhit = 1 If mX >= 200 And mX <= 599 And mY >= 412 And mY <= 458 Then menu= 1;(Hilfe)Buttonbegrenzung und If mX >= 281 And mX <= 448 And mY >= 542 And mY <= 595 Then menu= 0;(Hauptmenu)Menuzuordnung If mx >= 200 And mx <= 599 And my >= 475 And my <= 521 Then menu= 2;(Spiel Verlassen) If mx >= 200 And mx <= 598 And my >= 200 And my <= 248 Then menu= 3;(Spiel Starten) If mx >= 200 And mx <= 598 And my >= 270 And my <= 319 Then menu= 4;(Spiel Laden) If mx >= 200 And mx <= 598 And my >= 345 And my <= 394 Then menu= 5;(Optionen) End If ElseIf menu = 1 Then TileBlock gfxhilfe ElseIf menu = 2 Then Exit EndIf DrawImage gfxcursor, mX, mY So sollte es dann den gewünschten Effekt erzielen, wenn ich das Problem richtig erkannt habe. *EDIT* und natürlich, wenn die Buttons vorher schon gezeichnet werden, dann das auch zum menu=0 hinzufügen. |
||
mmsm1985 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vorab Danke.
1.Im hilfe menu soll selber kein Option Button exestieren. Für das Programm tut er das aber.In der Hilfe soll nur "zurück zum Hauptmenu" exestieren. 2. Ja, ich will auch erteinmal nur zwischen den Menus hin und her schalten können. Es löst mein Problem bedingt, aber den Rest bekomme ich schon alleine hin. Falls nicht weiß ich ja wo ich fragen kann. |
||
icestorm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich nehme doch an, die Buttons sind Grafiken und werden vor den ganzen if-Abfragen gezeichnet, das gehört (wie schon geschrieben) dann auch in die If.
Du könntest ja mal mehr als nur dieses Code-Stückchen posten! Außerdem würde ich dir empfehlen das Menu in Funktionen aufzuteilen, ist um einiges übersichtlicher! |
||
mmsm1985 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja die Buttons sind Bilddateien. Anders bekomm ich das nocht nicht hin. ![]() Das mit den Function hab ich noch nicht ganz raus. ![]() Hier der komplette Code: [AUSKLAPPEN] Graphics 800,600,16,1 SetBuffer BackBuffer() Global gfxhauptmenu = LoadImage("gfx\hauptmenu.png");Hauptmenu Grafik laden Global gfxcursor = LoadImage("gfx\cursor.jpg") ;Cursor laden(ordentlichen besorgen) Global gfxhilfe = LoadImage("gfx\hilfe.jpg") ;Hilfe laden(Bilddatei schreiben) Repeat ;Hauptschleife Flip TileBlock gfxhauptmenu ; Hintergrundgrafik zeichnen mx = MouseX() my = MouseY() mhit = MouseHit(1) mdown= MouseDown(2) DrawImage gfxcursor, mx , my ;Mauszeiger zeichnen If mhit = 1 If mX >= 200 And mX <= 599 And mY >= 412 And mY <= 458 Then menu= 1 If mx >= 281 And mx <= 448 And my >= 542 And my <= 595 Then menu=6 EndIf If menu = 0 Then;Wenn der und der Button gedrückt wird, dann passiert das und das. TileBlock gfxhauptmenu If mhit = 1 If mX >= 200 And mX <= 599 And mY >= 412 And mY <= 458 Then menu= 1;(Hilfe)Buttonbegrenzung und If mX >= 281 And mX <= 448 And mY >= 542 And mY <= 595 Then menu= 0;(Hauptmenu)Menuzuordnung If mx >= 200 And mx <= 599 And my >= 475 And my <= 521 Then menu= 2;(Spiel Verlassen) If mx >= 200 And mx <= 598 And my >= 200 And my <= 248 Then menu= 3;(Spiel Starten) If mx >= 200 And mx <= 598 And my >= 270 And my <= 319 Then menu= 4;(Spiel Laden) If mx >= 200 And mx <= 598 And my >= 345 And my <= 394 Then menu= 5;(Optionen) End If ElseIf menu = 1 Then TileBlock gfxhilfe ElseIf menu = 2 Then Exit EndIf DrawImage gfxcursor, mX, mY EndIf |
||
icestorm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, ich habe den Fehler gefunden:
Code: [AUSKLAPPEN] Graphics 800,600,16,1 SetBuffer BackBuffer() ;Eventuell Timer einbauen Global gfxhauptmenu = LoadImage("gfx\hauptmenu.png");Hauptmenu Grafik laden Global gfxcursor = LoadImage("gfx\cursor.jpg") ;Cursor laden(ordentlichen besorgen) Global gfxhilfe = LoadImage("gfx\hilfe.jpg") ;Hilfe laden(Bilddatei schreiben) Repeat ;Hauptschleife Flip mx = MouseX() my = MouseY() mhit = MouseHit(1) mdown= MouseDown(2) DrawImage gfxcursor, mx , my ;Mauszeiger zeichnen If mhit = 1 If mX >= 200 And mX <= 599 And mY >= 412 And mY <= 458 Then menu= 1 If mx >= 200 And mx <= 599 And my >= 475 And my <= 521 Then menu= 2;(Spiel Verlassen) EndIf If menu = 0 Then;Wenn der und der Button gedrückt wird, dann passiert das und das. TileBlock gfxhauptmenu If mhit = 1 If mX >= 200 And mX <= 599 And mY >= 412 And mY <= 458 Then menu= 1;(Hilfe)Buttonbegrenzung und If mX >= 281 And mX <= 448 And mY >= 542 And mY <= 595 Then menu= 0;(Hauptmenu)Menuzuordnung If mx >= 200 And mx <= 599 And my >= 475 And my <= 521 Then menu= 2;(Spiel Verlassen) If mx >= 200 And mx <= 598 And my >= 200 And my <= 248 Then menu= 3;(Spiel Starten) If mx >= 200 And mx <= 598 And my >= 270 And my <= 319 Then menu= 4;(Spiel Laden) If mx >= 200 And mx <= 598 And my >= 345 And my <= 394 Then menu= 5;(Optionen) End If ElseIf menu = 1 Then TileBlock gfxhilfe ElseIf menu = 2 Then Exit EndIf EndIf Du hattest nach dem Flip das gfxhauptmenu gezeichnet, also wird das bei jedem Schleifendurchlauf gezeichnet. Und du hast den Mauszeiger 2mal gezeichnet, funktioniert zwar trotzdem, aber es verbraucht mehr ressourcen! Oben sollte jetzt die fehlerfreie Version sein! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group