KriegeKeinMenüHin

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Pingu_Killer

Betreff: KriegeKeinMenüHin

BeitragDi, Jan 20, 2009 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay hab seit ein paar Tagen angefangen mir BB anzuschauen hab nur ein Problem welches ich nicht gelöst kriege und dessen Lösung mir einiges an Verständnis bringen würde.

Mein Menu besteht noch aus 4 Balken und sobald man auf einen dieser Balken clickt sollen alle unteren Balken entwas runter gehen und so platz für beliebig viele untergeordneten anderen Balken geben.
Aber soweit bin ich noch nicht ich kriege es nicht hin den Balken eine Identität zu geben und so ihn ein text zu zuordnen eine gleichung aufzustellen das alle anderen Balken unter ihnen runtergehen (sollen sogar irgent wann wieder hoch und auch ne Flüssiege bewegung wobei ich auch noch nicht weis wie ich das machen soll.........^^) Naya eben nen Typischen Linkmenü aber wollte es mit Types und so machen weil es später sich noch selbst erweitern können soll und weil ich das mit Types lernen wollte.

Freue mich über jede Hilfe.




Graphics 1280,1024,32,1
SetBuffer BackBuffer()

background = LoadImage("first2.jpg")
c = LoadImage("c.bmp") ;Mauszeiger
buttonN = LoadImage("f1.bmp") ;Normal
buttonS = LoadImage("fe1.bmp") ;Schatiert

Type button_anim
Field x,y
Field x2,y2
Field Texte
Field identity
End Type

For i = 1 To 4
button.button_anim = New button_anim
button\x = 25
button\y = 75*i
button\x2 = 50
button\y2 = 75*i
button\identity = i
Next

Repeat
Cls

Next

For button.button_anim = Each button_anim
DrawImage buttonN, button\x, button\y
If ImagesOverlap (c, MouseX(), MouseY(),buttonN,button\x,button\y) Then DrawImage buttonS, button\x, button\y
If ImagesOverlap (c, MouseX(), MouseY(),buttonN,button\x,button\y) And MouseHit(1) Then animation = 1
If animation = 1 Then button\y = button\y + 15

If button\y >= button\y2 + 75 Then button\y = button\y2 +75

If ImagesOverlap (c, MouseX(), MouseY(),buttonN,button\x,button\y) And MouseHit(1) Then animation = 2
If animation = 2 Then button\y = button\y - 15
If button\y >= 75 * i Then button\y = 75 * i

Next

DrawImage c, MouseX(), MouseY()
Flip
Until KeyHit(1)
------------------------------------------------------

Gründer und einziges Mitglied von
"NoobTec Games"

Jo0oker

Betreff: Also

BeitragDi, Jan 20, 2009 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
als erstes setzt den code mal bitte zwischen [.code][./code] (Ohne die Punkte)
Dann Rück ihn ein...

Und warum steht da:
Code: [AUSKLAPPEN]

Repeat
     Cls

     Next

einfach so nen Next?

lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!

Xeres

Moderator

BeitragDi, Jan 20, 2009 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Sowas ähnliches hatten wir vor nicht all zu langer Zeit:
https://www.blitzforum.de/foru...hp?t=30316

Und Code Tags bitte der Übersicht halber verwenden.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Pingu_Killer

BeitragDi, Jan 20, 2009 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
thx für die schnelle antwort
@ jooker ja das next steht da nur so hab vergessen es raus zunehemn weil ich vorhin noch ein paar andere sachen probiert habe

und das mit den code hab ich jetzt auch verstanden
------------------------------------------------------

Gründer und einziges Mitglied von
"NoobTec Games"

Pingu_Killer

BeitragDi, Jan 20, 2009 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ja stimmt ist ungefähr das selbe.... probiere es ma aus thx
------------------------------------------------------

Gründer und einziges Mitglied von
"NoobTec Games"

hamZta

Administrator

BeitragMi, Jan 21, 2009 3:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Doppelposts sind hier nicht gerne gesehen. Benutz bitte die Editier-Funktion.

mfg,
hamZta
Blog.

Pingu_Killer

BeitragMi, Jan 21, 2009 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ja es ist aber nicht das selbe problem was ich ja nicht hinkriege ist das wenn ich ein button anclicke das alle buttons die darunter sind sich um 150pixel tiefer gehen und das kriege ich eben nicht hin.
Hab vorhin alle neu geschrieben also einmal mit "For i = 0 To 2" wie auch im code und eben probiert mit functionen zu arbeiten wie bei dem anderen post als beispiel vorgeschlagen wurde.
------------------------------------------------------

Gründer und einziges Mitglied von
"NoobTec Games"

Xeres

Moderator

BeitragMi, Jan 21, 2009 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann mal her mit deinem aktuellen Code.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Pingu_Killer

BeitragMi, Jan 21, 2009 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weis nicht welcher ansatz besser ist auf jeden ist derhier eher provisorisch.
glaube von Xeres habe ich den kompletten code übernommen und probiert ein bischen umzuschreiben was mir warscheinlich nicht besonders elegant gelungen ist....... wie gesagt hab keine idee wie ich das mit den machen soll das wen ich einen anclicke das alle unter ihn runter gehen --> hatte die idee das irgent wie mit identity oder so zu machen weis aber nicht wie thx
freue mich über jeden nochso dämlichen tipp

Code: [AUSKLAPPEN]


Graphics(1280, 1024, 32, 1)
SetBuffer BackBuffer()
Local timer = CreateTimer(60)

Global Background = LoadImage ("first2.jpg")
Global Menu_Button = LoadImage ("f1.bmp")
Global MenuS_Button = LoadImage ("fe1.bmp")
Global Cursor = LoadImage ("c.bmp")
Buttony = 75

Type TButton
   Field identity
   Field x, y
   Field txt$
End Type

;hier solte der y wert irgent wie an eine varieble gebunden sein und nicht einfach *1...
;glaube beim ersten versuch hab ich dies besser hin bekommen
Local Button_Gam.TButton = Create_Button("Games", 50, 1 * Buttony, 1)   
Local Button_Fil.TButton = Create_Button("Filme", 50, 2 * Buttony, 2)
Local Button_Mus.TButton = Create_Button("Musik", 50, 3 * Buttony, 3)
Local Button_Hin.TButton = Create_Button("Hinzufügen", 50, 4 * Buttony, 4)
Local Button_Ein.TButton = Create_Button("Einstellungen", 50, 5 * Buttony, 5)
Local Button_Bee.TButton = Create_Button("Beeden", 50, 6 * Buttony, 6)


Repeat

DrawImage Background,0,0   
Draw_Buttons()
   If ImagesOverlap(Cursor, MouseX(), MouseY(), Menu_Button, 50, identity * Buttony )   Then Draw2_Buttons()
;hab hier glaube ich sogar nen kleinen fehler
        DrawImage Cursor, MouseX(), MouseY()
   ;If Button_Hit(Button_End) Then End
   
   Flip 0
   WaitTimer(timer)
   Cls
   
Until KeyHit(1)



Function Create_Button.TButton(ftxt$, fx, fy, fi)
   Local b.TButton = New TButton
   b\txt$ = ftxt$
   b\x = fx
   b\y = fy
   b\identity = fi   
   Return b   ;was soll dieses hier
End Function

Function Draw_Buttons()
   Local b.TButton
   For b = Each TButton     
      Color(0, 0, 255)     
   DrawImage(Menu_Button, b\x, b\y)
   Text(b\x + 150, b\y + 20, b\txt, True, True)     
   Next
End Function


Function Draw2_Buttons()
   Local b.TButton
   For b = Each TButton           
      Color(0, 0, 255)
   DrawImage(MenuS_Button, b\x, b\y)
   Text(b\x + 150, b\y + 20, b\txt, True, True)       
   Next
End Function

------------------------------------------------------

Gründer und einziges Mitglied von
"NoobTec Games"

Xeres

Moderator

BeitragMi, Jan 21, 2009 23:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieses identity würde ich so keinesfalls benutzen;
Entweder man kann den Button damit eindeutig Identifizieren, wie der Name impiliziert - das braucht es nicht, da wir jeden Button kennen - oder aber soll eine Höhenangabe sein, dafür reicht wohl die y Koordinate.
Ich würde eine Statusvariable vorschlagen, die das Abdeckt was du brauchst: geschlossen, wird geöffnet, offen, wird geschlossen.

Edit:
Bitte Pack deine Fragestellung nicht in den Code, sonst findet sie ja beim drüberschauen keiner...
Code: [AUSKLAPPEN]
Return b   ;was soll dieses hier

Wir haben in der Funktion einen Tbutton erstellt. Dieser wird mit Return zurückgeliefert und in einer Variable gespeichert, z.B. Button_Gam.TButton - Damit ist in dieser Variable immer eindeutig dieser Button gespeichert (oder bis man das ändert...).

Edit2:
Ich habe ein größeres Beispiel fertig gestellt, dass verdeutlicht wie ich es machen würde (und es funktioniert freilich nicht genau so wie du es gerne hättest Wink ) aber wenn du selber Types verstehen möchtest, wäre es vll. nicht wirklich hilfreich.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Pingu_Killer

BeitragDo, Jan 22, 2009 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
thx schaue es mir ma an
------------------------------------------------------

Gründer und einziges Mitglied von
"NoobTec Games"

xaerox

BeitragFr, Jan 23, 2009 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
warum schaust du denn nicht pbutton an? finde ich einfacher
Biker sind wahre Helden.
Auch Musiker.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group