játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5448
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2520

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2188
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
(DB) BlueGui 2.0 - Main Menu készítése 2007.08.30 13:55


Menükészítés

Miután feltelepítettük a plugint, a Projects mappában rendelkezésünkre áll egy RainBow nevű program (amiről mellékesen megjegyezném, hogy DBP-ben írták a gui felhasználásával. Indítsuk el a programot, majd kattintsunk a View menüpont Menü editor elemére!



Ekkor elénk tárul egy újabb ablak, amely a programunk 'head' menüjének elkészítéséhez szolgál. Kattintsunk jobb egérgombbal a Menu Root feliratra, majd válasszuk ki az Insert Item menüpontot. Ezzel menüponttal készíthetjük el leendő programunk főmenüit. Miután ezen túl vagyunk, kattintsunk a Menu Root-ból lenyíló egyik menüre (amelyeknek nevét magunk adtuk meg) és kattintsunk az Insert Submenu opcióra. Ezzel értelem szerűen almenüket készíthetünk. A lenyíló menü többi elemét nem magyaráznám, mivel tevékenységük magától értetődik.



Készítsük el az alábbi menüt:

Main Menu
File – Open, Convert to DBO, Exit
Options – Texture, Clear
About – Version


Ha kész vagyunk, lépjünk ki a Menu Editor-ból, és mentsük el a munkánkat forráskódként. Ezt a File – Export DarkBASIC code menüponttal érhetjük el.


A programkód elkészítése

A kódszerkesztőben van néhány dolog amit meg kell tennünk a BlueGui inicializálásához. Ezek a következők:

- Hívjuk meg a STARTBLUE parancsot, melynek két paraméterében adjuk meg a pluginhoz megvásárolt felhasználónevet és jelszavat. Ez sajnos elkerülhetetlen feltétele a GUI működésre bírásához, de ha valaki elakadt ezen a ponton, nyugodtan fordulhat hozzám segítségért (seeting@freemail.hu) :).

- #Include-oljuk be a fentebb mentett forrásfájlt, és a GUI.dba-t, amelyet minden példaprogram mappájában megtalálhattok.

- Ezután hajtsuk végre a CreateUI() és a CreateMainMenu() függvényeket.

Tulajdonképpen ha a programunk végére beszúrnánk egy végtelen ciklust, akkor már tesztelhetnénk is a menünket.


Menüpontok elérése

A menüpontjainak az interface-el kapcsolatos események kezelésével érhetjük el. Azonban ahhoz, hogy a BlueGui fel tudja dolgozni ezeket az eseményeket, mindenképpen meg kell hívnunk a GetEvent utasítást a main loopunkban.

A kód eddig valahogy így nézhet ki:

Kód:
Rem Random program a cikk kedvéért, hogy szemléltesse mivel is állunk szemben

Rem GUI betöltése
Set window on : Set window title "Boggle Modell Viewer"
startBlue "felhasználónév","jelszó”

Rem Hát igen
#Include ”GUI.dba”
#Include ”Interface.dba”

Rem Ezekkel a függvényekkel hajtatjuk végre mindazt, amit kiexportálunk kódként RainBow-ban
CreateUI()
CreateMainMenu()

Rem Egy kis frissítő a kánikulában
Sync on : Sync rate 60

Rem Main Loop
Do

Rem Események meghívása
Gosub Events

Rem Update Interface
GetEvent

Rem Képernyőfrissítés
Sync

Loop



A lényeg az Events alprogramban lelhető fel. A legutóbbi valós esemény kódját az EventType() függvény adja vissza. Azonban itt felvetődhet egy igen érdekes kérdés, mégpedig az, hogy honnan fogjuk mi azt megtudni, hogy melyik eseménynek mi a kódja? A válasz a GUI.dba -ban és az Interface.dba -ban található (ez az utóbbi az a forrásfájl, amit kiexportáltunk RainBowban). Ha megnyitjuk ezeket a fájlokat jegyzettömbbel, akkor elénk tárul a következő információ:


- Események:

Események
#constant MOUSE_CLICK 0x202
#constant LEFTBUTTON_UP 0x202
#constant RIGHTMOUSE_CLICK 0x205
#constant RIGHTBUTTON_UP 0x205
#constant MOUSE_MOVE 0x200
#constant GADGET_TIMER 0x113
#constant MENU_CLICK 0x111
#constant TOOLBAR_CLICK 0x111
#constant HOTKEY 0x312
#constant LEFTBUTTON_DOWN 513
#constant KEYDOWN 0x100
#constant KEYUP 0x101
#constant COMBOBOX_CHANGE 0x111
#constant TREEVIEW_CHANGE 0x111
#constant LOSEFOCUS 0x8
#constant GADGET_SIZING 0x214
#constant GADGET_SIZE 0x5
#constant WINDOW_CLOSE 0x10



- Menüpontok kódjai:

`Menu Globals
`-----------
global menu

#constant MENU_FILE 0
global menuFile
#constant MENU_OPEN 1
#constant MENU_CONVERTTODBO 2
#constant MENU_EXIT 3


#constant MENU_OPTIONS 4
global menuOptions
#constant MENU_TEXTURE 5
#constant MENU_CLEAR 6


#constant MENU_ABOUT 7
global menuAbout
#constant MENU_VERSION 8



Nézzük, hogyan is tudjuk ezt a tudést hazsnosítani a való életben (Olvassátok el a kommenteket):

Kód:
Rem Események
Events:

Rem Ha a legutóbbi esemény egy „menü klikkelés” volt
If EventType()=Menu_Click

Rem Ha a klikkelés az Open menüpontra történt
  If EventData()=Menu_Open
   Rem Az OpenDialog eljárással a cikksorozat következő fejezetében részletesebben foglalkozunk
   File$=OpenDialog("Megnyitás","Direct X modell (*.x)|*.x|Dark Basic modell (*.dbo)|*.dbo")
    If File$<>""
     Load object File$,1
   Else
    Rem A WarningMessage utasításs segítségével hibaüzenetekkel bombázhatjuk a felhazsnálót
    warningMessage "Egyszerre csak egy objektum lehet megnyitva!"
   Endif
  Endif
   
  Endif
 
Rem A Message csak sima 'Leokézható' üzenetet jelenít meg a képernyőn
  If EventData()=Menu_Version then message "Fejléc","Random projekt v1.0"
 
  If EventData()=Menu_Exit
    Rem A QeastionMessage függvény segítségével eldöntendő kérdést tehetünk fel
    Rem a felhasználónak, A visszakapott érték 1, ha a válasz IGEN
    Valasz=QuestionMessage("Biztosan ki akarsz lépni?","Kilépés")
    If Valasz=1 then End
  Endif
 
Rem Ha menükattintás történt ellenőrzés vége
Endif
Return


Befejezés

Remélem mindent érthetően magyaráztam el, ha valami hiba van a cikkben kérlek nézzétek el nekem, mert kicsit álmosan írtam :). Ha valami kérdésetek van, szívesen válaszolok rá.

//PH érték
Újraindul a DB News portál, ahol friss híreket és érdekes cikkeket olvashattok kedvenc fejlesztő eszközünkről, a DarkBASIC-ről.
//PH érték

Seeting

Értékelés: 10.00

Új hozzászólás
Nincs megjegyzés