Frage zu meiner GUI

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: Frage zu meiner GUI

BeitragMo, Jan 14, 2008 0:07
Antworten mit Zitat
Benutzer-Profile anzeigen
hi für mein game muss cih gui fenster haben, das problem ist, das man durch meine fenster durchklicken kann, ich weiss keinen rat mehr, woran das liegen könnte, kann mir jemand helfen, vll codeauschnitt...

mein code hier

Code: [AUSKLAPPEN]
Global WindowList:TList = New TList
Global Window:TWindow
Type TWindow
   Field Mode:Int
   Field Name:String
   Field X:Int
   Field Y:Int
   Field Width:Int
   Field Height:Int
   Field WID:String
         
   Function Create(Name:String, x:Int, y:Int, width:Int, height:Int, wid:String)
      Window:TWindow = New TWindow
      Window.name = name
      Window.x = X
      Window.y = Y
      Window.Width = Width
      Window.Height = Height
      Window.WID = wid
      
      WindowList.Addlast Window
   End Function
EndType

Function DrawWindow()
   For Window:TWindow = EachIn WindowList
      If Window.Mode = 0 Then
         SetAlpha 0.4
         SetBlend ALPHABLEND
      End If
      SetColor WindowR, WindowG, WindowB
      DrawRect Window.X + ImageWidth(WindowIMG3), Window.Y + ImageHeight(WindowIMG0), Window.Width + ImageWidth(WindowIMG0) - ImageWidth(WindowIMG3), Window.Height - ImageHeight(WindowIMG0)
      SetColor 255, 255, 255
      DrawImage WindowIMG0, Window.X, Window.Y, 0
      For x = Window.X + ImageWidth(WindowIMG0) To Window.X + Window.Width - 1
         DrawImage WindowIMG1, x, Window.Y
         DrawImage WindowIMG6, x, Window.Y + Window.Height
      Next
      DrawImage WindowIMG2, Window.X + Window.Width, Window.y
      For y = Window.Y + ImageHeight(WindowIMG0) To Window.Y + Window.Height - 1
         DrawImage WindowIMG3, Window.x, y
         DrawImage WindowIMG4, Window.X + Window.Width + ImageWidth(WindowIMG0) - ImageWidth(WindowIMG3), y
      Next
      DrawImage WindowIMG5, Window.X, Window.Y + Window.Height
      DrawImage WindowIMG7, Window.X + Window.Width, Window.Y + Window.Height
      SetColor WindowTitelR, WindowTitelG, WindowTitelB
      DrawText Window.Name, Window.X + 7, Window.Y + 4
      If Window.Mode = 0 Then
         SetAlpha 1
         SetBlend MASKBLEND
      End If
      
      If MouseDown(1) And Not (MouseX() < Window.x And MouseX() > Window.x + Window.Width And MouseY() < Window.y And MouseY() > Window.y + Window.Height) Then
         If Window.mode = 1 Then
            Window.mode = 0
         EndIf
      EndIf
      If MouseDown(1) And MouseX() > Window.X And MouseX() < Window.X + Window.Width And MouseY() > Window.Y And MouseY() < Window.Y + Window.Height And UnderWindow(Window.WID, Window.X, Window.Y, Window.Width, Window.Height) = 1 Then
         If Window.mode = 0 Then
            WindowList.Remove Window
            WindowList.AddLast Window
            Window.mode = 1
         End If
      End If
   Next
End Function

Function UnderWindow(WindowWID:String, x, y, w, h)
   For Window:TWindow = EachIn WindowList
      If Window.WID = WindowWID Then
         If MouseX() > Window.X And MouseX() < Window.X + Window.Width And MouseY() > Window.Y And MouseY() < Window.Y + Window.Height Then      
            Return 1
         EndIf
      EndIf
   Next
   Return 0
End Function


Function StartGUI()
   DrawWindow()
End Function




Graphics 1024, 768

TWindow.Create("Testfenster 0", 50, 50, 200, 180, "Cyber")
TWindow.Create("Testfenster 1", 80, 80, 200, 180, "Cyber1")
Repeat
   Cls
   StartGUI()
   
   Flip
Until KeyDown(KEY_ESCAPE)
End
 

Shark

BeitragFr, Jan 18, 2008 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Was mir bei deinem Code auffällt ist dieser Teil.
Es scheint mir so als wären die zwei Abfragen Identisch!
Code: [AUSKLAPPEN]
      If MouseDown(1) And Not (MouseX() < Window.x And MouseX() > Window.x + Window.Width And MouseY() < Window.y And MouseY() > Window.y + Window.Height) Then
         If Window.mode = 1 Then
            Window.mode = 0
         EndIf
      EndIf
      If MouseDown(1) And MouseX() > Window.X And MouseX() < Window.X + Window.Width And MouseY() > Window.Y And MouseY() < Window.Y + Window.Height And UnderWindow(Window.WID, Window.X, Window.Y, Window.Width, Window.Height) = 1 Then
         If Window.mode = 0 Then
            WindowList.Remove Window
            WindowList.AddLast Window
            Window.mode = 1
         End If
      End If


Code: [AUSKLAPPEN]
If Mousedown(1) and MouseX()> blah


ist das gleiche wie

Code: [AUSKLAPPEN]
If MOusedown(1) and Not Mousex()< blah


Ich hoffe, dass es dir weiter hilft

mfg Shark
 

c64

BeitragFr, Jan 18, 2008 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Mathias,

Wenn du ein, stabilen Core benötigst und einfach nur schnell Gadgets Coden möchtest, schau dir doch ma bitte mein CoreGUI an.

Du kannst auch dein komplett eigenes Gadgetset einbinden und musst nicht das von CoreGUI nutzen.


mfg.
c64
Betreten verboten! Kinder haften für ihre Eltern!

Mathias-Kwiatkowski

BeitragSa, Jan 19, 2008 2:34
Antworten mit Zitat
Benutzer-Profile anzeigen
danke C64 das werde ich auf jedenfall machen. den es geht mir nicht drum ne gui zu proggen sondern eine zu nutzen Very Happy
 

Dreamora

BeitragSa, Jan 19, 2008 3:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Sonst gibt es auch noch die HighGUI um eine freierhältliche Möglichkeit in BM zu nennen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Mathias-Kwiatkowski

BeitragSa, Jan 19, 2008 3:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ja nur der download link ist tot

http://www.tiscali.co.uk/servi...e/404.html

und habe keine neue addy gefunden, auch nicht über die suchfunktion
 

Dreamora

BeitragSa, Jan 19, 2008 5:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Und was genau soll da für ne File gelegen haben??

HighGui wär unter http://highgui3.com/ zu finden
CoreGui unter http://www.feuerware.com/team/....php?id=21
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

c64

BeitragSa, Jan 19, 2008 6:08
Antworten mit Zitat
Benutzer-Profile anzeigen
PS: CoreGUI ist auch absolut frei und bleibt es auch !!! auch das Standard GadgetSet, was stetig erweitert und gepflegt wird. Und es hat n Forum wo rel. schnell geholfen wird. Dennoch HighGUI wird sicher auch keine schlechte wahl sein.


mfg.
c64
Betreten verboten! Kinder haften für ihre Eltern!

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group