Type funzelt nit

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Kryan

Betreff: Type funzelt nit

BeitragSo, Feb 22, 2004 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich wollte mal selber GUI schreiben und da klappt irgendwas mit den
types nit:
Code: [AUSKLAPPEN]

SetBuffer BackBuffer()

Type windoof
 Field activ%
 Field X
 Field Y
End Type
Dim window.windoof(10)
For I=1 To 10
 window.windoof(I)=New windoof
Next

Function CreateWindow(ID,X,Y)
window(ID)\activ=1;<-- Hier sind die Fehler
window(ID)\X=winX;<-- Hier sind die Fehler
window(ID)\Y=winY ;<-- Hier sind die Fehler
End Function


und das ist die hauptdatei:
Code: [AUSKLAPPEN]

Graphics 640,480
windowed=CreateWindow(1,1,1)
Include "krygui.bb"
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

Edlothiol

BeitragSo, Feb 22, 2004 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, kompiliert bei mir ohne Probleme. Was mir nur auffällt: Du nutzt die Nr. 0 des Arrays nicht, die gibts ja auch noch.
Code: [AUSKLAPPEN]
For I=0 To 10
 window.windoof(I)=New windoof
Next

Was funktioniert denn genau nicht?

Kryan

BeitragSo, Feb 22, 2004 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn ich starte kommt "Illegal Memory Address"
und als ich die Types in der Funktion entfernt habe ging es!
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

Edlothiol

BeitragSo, Feb 22, 2004 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
AAAAAAH! Ich habs! Du includest krygui.bb nach dem CreateWindow() - Aufruf. Zu diesem Zeitpunkt ist das Array aber noch nicht initialisiert!
-> Include ganz an den Anfang setzen, dann müsste es gehen.

Kryan

BeitragSo, Feb 22, 2004 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
cool, jetzt klappt es, ich dachte eigentlich wäre es egal, wo man include sachen hinpackt Sad
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Kryan

BeitragSo, Feb 22, 2004 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics 1024,768
Global stopwindow=CreateImage(25,25)
SetBuffer ImageBuffer(stopwindow)
Color 128,128,128
Rect 0,0,25,25
Color 1,1,1
Line 2,2,23,23

Global titelleiste=CreateImage(1024,25)
SetBuffer ImageBuffer(titelleiste)
Color 0,0,255
Rect 0,0,1024,25

SetBuffer BackBuffer()

Type windoof
 Field activ%
 Field X
 Field Y
End Type
Dim window.windoof(10)
For I=0 To 10
 window.windoof(I)=New windoof
Next

Function CreateWindow(ID,X,Y)
window(ID)\activ=1
window(ID)\X=winX
window(ID)\Y=winY
Return ID
End Function

Function ShowWindow(ID)
 If window(ID)\activ=1 Then
  DrawImage titelleiste,window(ID)\X,window(ID)\Y
 Else
  RuntimeError("Illegal Memory Address by Kryan")
 End If
End Function


und das hauptprogramm:


Code: [AUSKLAPPEN]

Include "krygui.bb"
Graphics 640,480
windowed=CreateWindow(1,1,1)
ShowWindow(windowed)
WaitKey
End


Wieder Illegal Memory Address
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

Edlothiol

BeitragSo, Feb 22, 2004 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Du erstellst in der Include - Datei Bilder. Danach steht jedoch in der Hauptdatei ein Graphics - Befehl, sodass sie alle wieder gelöscht werden. Setz das Include nach dem Graphics Wink

Edit: Übrigens setzt du 2mal den Grafikmodus - einmal in der Include - , und einmal in der Hauptdatei.

Kryan

BeitragSo, Feb 22, 2004 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
die titelleiste sehe ich danach aber immer noch nicht
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Jolinah

BeitragSo, Feb 22, 2004 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Graphics würd ich in die Include nicht reinmachen.
Ausserdem wenn du schon types benutzt würde ich die CreateFunktion so machen das immer ein neues Fenster erstellt wird.

Code: [AUSKLAPPEN]

Function CreateWindow(x,y)

  win.windoof = new windoof
  win\activ = 1
  win\x = x
  win\y = y

  Return Handle(win)

End Function


Draw Funktion:
Code: [AUSKLAPPEN]

Function DrawGUI()

  For win.windoof = each windoof
    if win\activ = 1
      DrawImage .......
      ......
    endif
  Next

End Function



Damit könntest du dann so viele Fenster machen wie du willst.
ID brauchts auch nicht unbedingt, bekommt man mit Handle automatisch eine.

Wenn du von dem handle aus wieder ein Objekt machen willst:

Code: [AUSKLAPPEN]

win = CreateWindow(100,100)
win\x = 100 ;Geht nicht! ist nur das handle

winobj.windoof = Object.windoof(win) ;Damit kriegt man zugriff auf das objekt

winobj\x = 100 ;Funktioniert



PS:
Hauptprogramm:
Code: [AUSKLAPPEN]

Graphics ....
SetBuffer BackBuffer()

Include "...."

Main Loop....

Wenn du wieder das Objekt willst

Kryan

BeitragMo, Feb 23, 2004 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
aso, ok thx jolinah und natürlich edlothiol
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group