Seite 1 von 1
Probleme beim Fenster
Verfasst: 03.11.2009 16:39
von felix16
Hallo,
ich bin neu hier und habe ein Problem. Ich habe mit dem Visual Disigner ein Fenster erstellt, und wollte in diesem einen Screen offnen und das Spiel darin laufen lassen. Also habe ich die Daten in PureBasic eingefügt und versucht, die Befehle in das Spiel zu integrieren. Allerdings kam nur eine Fehlermeldung, die besagte, das die WindowID falsch ist. Ich habe mich durch das Tutorium von purebasic.com gearbeitet und ein Spiel daraus genommen, um herauszufinden, wie das funktioniert.
mfG Felix
Re: Probleme beim Fenster
Verfasst: 03.11.2009 16:42
von Andesdaf
Erstmal: Willkommen an Bord.
allerdings ist dein Problem ohne kurzen, lauffähigen Code, der dein Anliegen beschreibt,
nur schwer reproduzierbar. Könntest du also etwas code hierher posten?
Vom Problem her würde ich sagen du könntest mal ein WindowID() einbauen und es dann
noch einmal testen.
Re: Probleme beim Fenster
Verfasst: 03.11.2009 19:10
von walker
Dazu braucht man keinen code..... felix16 hat doch genau beschrieben wa er getan hat... Ein fenster geöffnet um darin einen Screen zu erstellen... und eine Fehlermeldung erhalten! (und einen lauffähigen kann er nicht liefern da er Fehler bekommt

)
Zu dem Problem:
Um einen WindowedScreen() (um diesen handelt es sich offensichtlich) in einem Fenster zu öffnen, musst du die Fenster-Nummer, die beim Erstellen des Window angegeben wird mit WindowID(Fensternummer) an den Befehl für den WindowedScreen übergeben.
Schau dir mal die Hilfe zu OpenWindowedScreen() an
Aber um mit den Worten von Andeasdaf abzuschliessen... Ein CodeSchnippsel der das Problem
verdeutlicht ist IMMER eine gute Sache

(mit lauffähig meint er einen Code, der alles incl. einer Eventschleife enthält)
PS: Willkommen im Board

Re: Probleme beim Fenster
Verfasst: 03.11.2009 19:52
von felix16
Hallo,
danke für die Hilfe, über die WindowID meckert er nicht mehr.
Wenn ich allerdings versuche, zu starten, makiert PB mir den LoadSprite-Befehl. Die Fehlermeldung lautet:
There is no current Screen.
Ich habe den vom Visual Designer erstellten Code anstelle von OpenScreen eingesetzt, jetzt weiß ich nicht, wo und wie ich den Befehl für den Window-Screen setzen muss.
Hier der Code für das Fenster:
Code: Alles auswählen
Enumeration
#Window_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 300, 100, 640, 480, "Spiel", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
EndIf
EndIf
EndProcedure
Code-Tags ergänzt
Andesdaf
Re: Probleme beim Fenster
Verfasst: 03.11.2009 20:10
von jojo1541
Wilkommen im Board.
Code: Alles auswählen
Enumeration
#Window_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 300, 100, 640, 480, "Spiel", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar )
OpenWindowedScreen(WindowId(#window_0),0,0,640,480,0,0,0)
If CreateGadgetList(WindowID(#Window_0))
EndIf
EndIf
EndProcedure
Du hast den Befehl, um den Screen zu öffnen vergessen. OpenWindowedScreen(WindowID,X,Y,Weite,Höhe,Autostretch,Rightoffset,Bottomoffset) öffnet einen Screen im Fenster.
Im übrigen würde ich den Visual-Designer meiden, da er sehr veraltet ist.
Ps: Bitte das nächste mal Code-tags verwenden, das erhöt die Übersichtlichkeit deutlich.

Re: Probleme beim Fenster
Verfasst: 03.11.2009 20:14
von felix16
Hallo,
ich habe den Befehl extra weggelassen, ich möchte wissen, ob der Befehl in die Klammer der Procedure gehört oder hinter die Klammer, und was noch dazu gehört, der Befehl alleine funktioniert anscheinend nicht.
Re: Probleme beim Fenster
Verfasst: 03.11.2009 20:20
von jojo1541
Der Befehl gehört auf jeden Fall in die Procedure, da befehle die außerhalb stehen, bei Procedureaufruf garnicht abgearbeitet werden.
Der Befehl alleine kann garnicht funktionieren, da er immer ein Fenster braucht, zu dem er gehört.
Hier mal ein kleines Beispiel:
Code: Alles auswählen
InitSprite()
Enumeration
#window
EndEnumeration
OpenWindow(#window,100,100,200,200,"Test")
OpenWindowedScreen(WindowID(#window),0,0,200,200,0,0,0)
;Bei Procedureaufruf hier Procedurenamen eingeben und openscreen und openwindowedscreen weglassen...
Repeat
ClearScreen(0)
StartDrawing(ScreenOutput())
Box(20,20,30,30,$2747D8)
StopDrawing()
FlipBuffers()
Until WaitWindowEvent() = #PB_Event_CloseWindow
;Mit Procedure:
;Procedure Openwindow()
;
; OpenWindow(#window,100,100,200,200,"Test")
; OpenWindowedScreen(WindowID(#window),0,0,200,200,0,0,0)
;
;endprocedure
Re: Probleme beim Fenster
Verfasst: 03.11.2009 20:20
von Andesdaf
der Befehl gehört in die Procedure hinein.
