fb:porticula NoPaste
MyButton.bi die 2
Uploader: | MB Interactive Labs |
Datum/Zeit: | 18.10.2010 21:57:21 |
'*********************************************************************************
'* MyMenu: Funktion ist es aus eine Grafikdatei, eine funktionierendes Menü für *
'* ein Spiel zu machen. *
'*********************************************************************************
'* Copyright by: MB Interactive Labs. 2010.
'*********************************************************************************
'#Include Once "Inc\Grafik\MyGrafik.bi" 'Datei die für das Laden der 2D BMP Datein verantwortlich ist
Type tButton
ButtonID As Integer 'Abspeichern der ID des Buttons
SizeX As Integer 'Größe des Bildes Speichern
SizeY As Integer 'Größe des Bildes Speichern
PosX As Integer 'Position des Buttons
PosY As Integer 'Position des Buttons
Filename As String 'BildName
Grafik As Any Ptr 'Bildbuffer
End Type
Dim Shared Buttons(1 To 2) As tButton
'Laden der Bilddaten(BMP)
Declare Sub Load_Button()
'Anzeigen der Bilddaten(BMP)
Declare Sub Show_Button()
'Abfragen, ob Mausbutton gedrückt worden ist und wenn ja, in welchen bereich gedrückt worden ist?
Declare Function CheckButtonClick(x As Integer, y As Integer, t As Integer) As Integer
'Löschen des Button
Declare Sub Destroy_Button()
'*********************************************************************************
SUB LoadButtons()
'Buttons in den Speicher laden
Dim As Integer breit, hoch
Dim As Integer ff, i
FOR i = LBOUND(Buttons) TO UBOUND(Buttons)
'Ermitteln der Bildabmessungen:
'Details siehe http://www.freebasic-portal.de/index.php?s=tutorials&id=16
ff=FREEFILE
Open Buttons(i).Filename For Input As #ff 'öffne die Datei zum lesen
Get #ff, 19, breit 'Breite aus der BMP-Datei auslesen
Get #ff, 23, hoch 'Höhe aus der BMP-Datei auslesen
Close #ff
hoch=ABS(hoch)
With Buttons(i)
.SizeX = breit
.SizeY = hoch
.Grafik = ImageCreate(breit,hoch)
BLOAD .Filename, .Grafik 'Laden
End With
NEXT i
END SUB
SUB ShowButtons()
'Buttons auf den Bilschirm ausgeben
DIM AS INTEGER i
SCREENLOCK
FOR i = LBOUND(Buttons) TO UBOUND(Buttons)
With Buttons(i)
PUT (.PosX,.PosY), .Grafik, PSET
END WITH
NEXT i
SCREENUNLOCK
END SUB
FUNCTION CheckButtonClick(x As Integer, y As Integer, t As Integer) As Integer
DIM AS INTEGER i
Do
SLEEP 1
If t And 1 Then 'Linke Maustaste gedrückt!
FOR i = LBOUND(Buttons) TO UBOUND(Buttons)
With Buttons(i)
'Abfrage, ob sich die Maus auf einem Button befindet:
IF (x >= .PosX) AND (x <= .PosX+.SizeX) AND (y >= .PosY) AND (y <= .PosY+.SizeY) Then
RETURN .ButtonID 'ButtonID zurückliefern
EXIT FUNCTION
END IF
END WITH
NEXT i
END IF
Loop
RETURN 0
END FUNCTION
SUB DestroyButtons
'Speicher freigeben
DIM AS INTEGER i
FOR i = LBOUND(Buttons) TO UBOUND(Buttons)
If Buttons(i).Grafik <> 0 Then ImageDestroy Buttons(i).Grafik
NEXT i
END Sub