Seite 1 von 1
Hab ich beim Window/Screen Erstellen was zu beachten?
Verfasst: 07.09.2013 11:47
von nathan7
Also ich hab mit folgendem Code ein Window mit Screen erstellt.
Läuft auf wunderbar, stürzt aber ab wenn ich mit der Maus drübergehe und mehrmals draufklicke.
Die Windows Sanduhr(win 8 isses ja der Kreis) wird auch beim Drüberfahren über das Fenster angezeigt.
Code: Alles auswählen
If OpenWindow(1, 10, 10, 640,480,"Windowed") = 0 ; Wenn "Oeffne ein Vollbild" aus ist,
MessageRequester("Fehler","Konnte kein Window erstellen ",0) ; wird eine Fehlermeldung ausgegeben.
EndIf
OpenWindowedScreen(WindowID(1), 0, 0, 640, 480)
Oder muss ich diese WindowMinimize etc. zwingend angeben?
Re: Hab ich beim Window/Screen Erstellen was zu beachten?
Verfasst: 07.09.2013 11:53
von RSBasic
Da ich nicht deinen vollständigen Code sehen kann, kann ich dir auch nicht sagen, wo der Fehler ist. Vielleicht fehlt bei dir eine Eventschleife?
Versuche den folgenden Beispielcode aus der Hilfe unter "OpenWindowedScreen()" als Vorlage zu benutzen:
Code: Alles auswählen
If InitSprite() = 0
MessageRequester("Error", "Can't open screen & sprite enviroment!", 0)
End
EndIf
If OpenWindow(0, 0, 0, 220, 160, "A screen in a window...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0, 170, 135, 45, 20, "Quit")
If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160)
CreateSprite(0, 20, 20)
If StartDrawing(SpriteOutput(0))
Box(0, 0, 20, 20, RGB(255, 0, 155))
Box(5, 5, 10, 10, RGB(155, 0, 255))
StopDrawing()
EndIf
Else
MessageRequester("Error", "Can't open windowed screen!", 0)
End
EndIf
EndIf
direction = 2
Repeat
; Es ist sehr wichtig, alle im Queue befindlichen Ereignisse während jedes Frames abzuarbeiten
;
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_Gadget
If EventGadget() = 0
End
EndIf
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
DisplaySprite(0, x, x)
x + direction
If x > 140 : direction = -2 : EndIf
If x < 0 : direction = 2 : EndIf
Delay(1)
ForEver
Re: Hab ich beim Window/Screen Erstellen was zu beachten?
Verfasst: 07.09.2013 11:56
von Kiffi
nathan7 hat geschrieben:Läuft auf wunderbar, stürzt aber ab wenn ich mit der Maus drübergehe und mehrmals draufklicke.
ich vermute eher, dass es nicht abstürzt, sondern nicht reagiert.
Das liegt an der fehlenden Event-Schleife. Diese sorgt dafür, dass eingehende Ereignisse auch verarbeitet werden
nathan7 hat geschrieben:Oder muss ich diese WindowMinimize etc. zwingend angeben?
nein, die Flags sind optional.
Grüße ... Kiffi
Re: Hab ich beim Window/Screen Erstellen was zu beachten?
Verfasst: 07.09.2013 12:26
von nathan7
Was muss ich da hinzufügen?
das ist meine vorläufige init.pb
Code: Alles auswählen
If InitSprite() = 0
MessageRequester("Fehler","Konnte dx nicht finden",0)
EndIf
If InitKeyboard()=0
MessageRequester("Fehler","Konnte dx nicht finden",0)
EndIf
If OpenWindow(0, 0, 0, 640,480,"Windowed",#PB_Window_SystemMenu | #PB_Window_ScreenCentered) = 0
MessageRequester("Fehler","Konnte kein Window erstellen ",0)
EndIf
OpenWindowedScreen(WindowID(0), 0, 0, 640, 480)
UsePNGImageDecoder()
Global tile = LoadSprite(#PB_Any, "tile2.png",0)
Global dude = LoadSprite(#PB_Any, "dude.bmp",0)
Global Player_pos_x = 304, Player_pos_y = 320
Global scroll_x = 0, scroll_Y =0
Global rauf = 200, runter = 208, rechts = 205, links = 203, space = 57 ,aa.l = 23, bb.l = 15
Global Dim level.l(aa,bb)
Restore mapdata
For y=0 To 14
For x=0 To 22
Read level(x,y)
Next
Next
Re: Hab ich beim Window/Screen Erstellen was zu beachten?
Verfasst: 07.09.2013 12:57
von Kiffi
nathan7 hat geschrieben:Was muss ich da hinzufügen?
eine Event-Schleife. Haben Ray und ich doch geschrieben.
Du muss mit WindowEvent() die Ereignisse abholen und bei Bedarf darauf reagieren.
Grüße ... Kiffi
Re: Hab ich beim Window/Screen Erstellen was zu beachten?
Verfasst: 07.09.2013 13:00
von nathan7
Danke sehr...
hatte das auch eingefügt, aber da rächt sich mal wieder unordnung im code....
mir hatte es dabei den rest zerschossen...
nun funktioniert es...