Auswahlproblem in meiner Menu-Gui

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Kekskiller

Betreff: Auswahlproblem in meiner Menu-Gui

BeitragFr, Jun 25, 2004 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bastele momentan an einem Menu für meinen Karteneditor
und habe auch schnell und gut Erfolge gemacht. Nur hat sich da
ein Auswahlproblem eingenistet. Die Werte von SELECTEDMENUPUNKT
sind verfälscht im Gegensatz zu SELECTEDOBERMENU. Es werden
unmögliche Zahlen angezeigt, aber naja. Hier ist der Code, hoffe
jemand findet dort ein Problem:
Code: [AUSKLAPPEN]
Graphics 640,480,16,1
SetBuffer BackBuffer()
Global button=LoadAnimImage("Button.png",85,38,0,2):MaskImage button,255,0,255
Global font=LoadAnimImage("Font.png",13,16,0,96):MaskImage font,0,255,0
Global cursor=LoadImage("Cursor.png"):MaskImage cursor,0,255,0
Global menutiles=LoadAnimImage("MenuTiles.png",116,17,0,8):MaskImage menutiles,255,0,255
Const FontBreite=13
Global ACTIVEMENU=0,SELECTEDOBERMENU=0,SELECTEDMENUPUNKT=0

Type obermenu
 Field name$
 Field number
 Field status
 Field popup
End Type
Global obermenuzaehler,o.obermenu

Type menupunkt
 Field name$
 Field number
 Field parent
 Field status
End Type
Dim menupunktzaehler(8)
Global m.menupunkt

AddOberMenu("KARTE",1)
 AddMenuPunkt("SPEICH.",1,1)
 AddMenuPunkt("OEFFNEN",2,1)
 AddMenuPunkt("ENDE",3,1)
AddOberMenu("ZOOM",2)
 AddMenuPunkt("#1",1,2)
 AddMenuPunkt("#2",2,2)
 AddMenuPunkt("#3",3,2)
 AddMenuPunkt("#4",4,2)
 AddMenuPunkt("#5",5,2)
AddOberMenu("LAYER",3)
 AddMenuPunkt("1",1,3)
 AddMenuPunkt("2",1,3)
 AddMenuPunkt("3",1,3)
 AddMenuPunkt("4",1,3)
 AddMenuPunkt("5",1,3)
AddOberMenu("MODUS",4)
 AddMenuPunkt("LOWER",1,4)
 AddMenuPunkt("UPPER",2,4)
 AddMenuPunkt("DATA",4,4)
AddOberMenu("HILFE",5)
 AddMenuPunkt("README",1,5)
 AddMenuPunkt("INFO",2,5)

Repeat
Cls
DrawAll_UPDATE()
Text 10,60,SELECTEDOBERMENU
Text 10,80,SELECTEDMENUPUNKT
Flip
Until KeyHit(1)
End

Function AddOberMenu(name$,number)
o.obermenu=New obermenu
o\name$=name$
o\number=number
o\status=0
o\popup=0
obermenuzaehler=obermenuzaehler+1
End Function

Function AddMenuPunkt(name$,number,parent)
m.menupunkt=New menupunkt
m\name$=name$
m\number=number
m\parent=parent
m\status=0
menupunktzaehler(parent)=menupunktzaehler(parent)+1
End Function

Function DrawAll_UPDATE()
;Menus malen und prüfen
For o.obermenu=Each obermenu
 buttonxpos=(z*ImageWidth(button))-(z*10)
 DrawImage button,buttonxpos,0,o\status
 SpeedPrint(buttonxpos+11,10,o\name$)
 If ACTIVEMENU=0 Then
  If ImageRectCollide(button,buttonxpos,0,o\status,MouseX(),MouseY(),1,1) Then o\status=1 Else o\status=0
  Select o\status
   Case 1:If MouseHit(1) And menupunktzaehler(o\number)>0 Then:o\popup=1:ACTIVEMENU=o\number:EndIf
  End Select
 EndIf
 Select o\popup
  Case 1
   height=menupunktzaehler(o\number)*ImageHeight(menutiles)
   z2=0
   NOPOPUP=0
   For m.menupunkt=Each menupunkt
    If m\parent=o\number Then
     punktypos=z2*ImageHeight(menutiles)
     tileypos=(ImageHeight(button)-5)+punktypos
     If ImageRectOverlap(menutiles,buttonxpos+5,tileypos,MouseX(),MouseY(),1,1) Then
      m\status=1 Else m\status=0:NOPOPUP=NOPOPUP+1
      If MouseHit(1)=1 Then
       SELECTEDOBERMENU=m\parent:SELECTEDMENUPUNKT=m\number:o\status=0:o\popup=0:ACTIVEMENU=0
      EndIf
     EndIf
     Select z2
      Case 0:If height=ImageHeight(menutiles) Then tile=6+m\status Else tile=0+m\status
      Case menupunktzaehler(o\number)-1:tile=4+m\status
      Default:tile=2+m\status
     End Select
     DrawImage menutiles,buttonxpos+5,tileypos,tile
     SpeedPrint(buttonxpos+5+7,tileypos,m\name$)
     z2=z2+1
    EndIf
   Next
   Select NOPOPUP
    Case menupunktzaehler(o\number):If MouseHit(1)=1 Then o\status=0:o\popup=0:ACTIVEMENU=0
   End Select
 End Select
 z=z+1
Next
;Cursor
FlushMouse()
DrawImage cursor,MouseX(),MouseY()
End Function

Function SpeedPrint(x,y,txt$,plus=0)
length=Len(txt$)*FontBreite
For z=x To x+length-1 Step FontBreite
 pos=pos+1
 DrawImage font,z+plus,y,Asc(Mid(txt$,pos,1))-32
Next
End Function

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group