Seite 1 von 2

WindowedScreen()

Verfasst: 15.08.2006 22:03
von a14xerus
Was ist hier der Fehler??
Ich verstehe das nicht

Code: Alles auswählen

If InitSprite() = 0
  MessageRequester("Error", "Fehlercode 1", #MB_OK|#MB_ICONERROR)
  End
EndIf
If InitSound() = 0
  MessageRequester("Error", "Fehlercode 2", #MB_OK|#MB_ICONERROR)
  End
EndIf
If InitKeyboard() = 0
  MessageRequester("Error", "Fehlercode 3", #MB_OK|#MB_ICONERROR)
  End
EndIf
If InitMouse() = 0
  MessageRequester("Error", "Fehlercode 4", #MB_OK|#MB_ICONERROR)
  End
EndIf


Enumeration
  #window_1
  
  #box
EndEnumeration

#WindowWidth = 400
#WindowHeight = 300

Global Ball_X.l = 0
Global Ball_Y.l = 0

Procedure Fenster()
  If OpenWindow(#window_1,0,0,#WindowWidth,#WindowHeight,"MiniGame by Alexander N",#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
    If CreateGadgetList(WindowID(#window_1))
      If OpenWindowedScreen(WindowID(#window_1),0,0,1,1,1,0,0)
      
        CreateSprite(#box,10,10)
        StartDrawing(SpriteOutput(#box))
        Box(0,0,10,10,RGB(255,255,255))
        StopDrawing()
      EndIf
    EndIf
  EndIf
EndProcedure

Procedure ende()
  End
EndProcedure






Fenster()
Repeat
  Delay(1)
  
  Event = WaitWindowEvent(10)
  
  WindowID = EventWindow()
  
  GadgetID = EventGadget()
  
  EventType = EventType()
  
  
  
  If Event = #PB_Event_CloseWindow
    Select MessageRequester("Ende", "Wollen sie wirklich beenden?", #MB_YESNO|#MB_ICONQUESTION)
      Case #IDYES
        ende()
    EndSelect
  EndIf
  

  
  
  
  ExamineKeyboard()
  ClearScreen($000)

  ;For i = 0 To #WindowWidth Step 10
    DisplaySprite(#box,0,0)  ;wenn ich das hier auskommentier habe ich einen normalen schwarzen hintergund.. wenn nicht kommt bei mir ein farbverlauf.. oder macht das nur meine Grafikkarte?
  ;Next
  
    
  
  FlipBuffers()
ForEver

Verfasst: 15.08.2006 22:20
von Frogger
Auf den ersten Blick würde ich sagen es ist das WaitWindowEvent(...).
Ersetze es durch WindowEvent(...) und baue ein Delay(1) in die Schleife.
Mach aus ClearScreen($000) ClearScreen($000000).

Verfasst: 15.08.2006 22:26
von ts-soft
>> Mach aus ClearScreen($000) ClearScreen($000000).
Was soll das bezwecken? 0 bleibt 0, 00 oder 000 sind immer noch 0 :wink:

WaitWindowEvent(10) ist auch die bessere Alternative für ein Fenster.

Der WindowedScreen ist nur ziemlich klein geraten :wink:

Verfasst: 15.08.2006 22:45
von HeX0R
Du erstellst einen 1 Pixel grossen Screen.
Auch mit Autostretch bleibt er dennoch relativ gesehn 1 Pixel gross.

Ich sehe zwar keinen Farbverlauf (wieso auch ?), aber alles ist weiss, was auch logisch ist, weil man quasi nur ein irre aufgeblasenes weisses Sprite sieht.

Verfasst: 15.08.2006 22:49
von Frogger
>>Was soll das bezwecken? 0 bleibt 0, 00 oder 000 sind immer noch 0 Wink
Für den RGB-Hex-Wert wird es nun mal so gemacht.
Es schadet nicht, wenn man es sich gleich am Anfang angewöhnt :wink:

>>WaitWindowEvent(10) ist auch die bessere Alternative für ein Fenster.
Für ein Fenster ohne Screen ja.
In diesem Fall blockt das WaitWindowEvent die Ausführung der Schleife.


lol das Wichtigste übersehen 1*1 Pixel :lol:

Verfasst: 15.08.2006 22:57
von ts-soft
Frogger hat geschrieben:>>Was soll das bezwecken? 0 bleibt 0, 00 oder 000 sind immer noch 0 Wink
Für den RGB-Hex-Wert wird es nun mal so gemacht.
Es schadet nicht, wenn man es sich gleich am Anfang angewöhnt :wink:
$0, 0, ist beides gleich und die Anzahl der nullen ist auch unerheblich, bzw. alle zusätzlichen Nullen sind vollkommen blödsinnig :mrgreen:

>>WaitWindowEvent(10) ist auch die bessere Alternative für ein Fenster.
Frogger hat geschrieben: Für ein Fenster ohne Screen ja.
In diesem Fall blockt das WaitWindowEvent die Ausführung der Schleife.

Block garnichts, weil ein TimeOut von 10 ms eingestellt ist. Das Programm reagiert so wesentlich besser auf das schließen ereignis, als bei einem Delay.
Das Timeout wurde extra aus diesem Grunde eingeführt, damit ein Delay unnötig wird.

Verfasst: 15.08.2006 22:59
von Falko
HeX0R hat geschrieben:Du erstellst einen 1 Pixel grossen Screen.
Auch mit Autostretch bleibt er dennoch relativ gesehn 1 Pixel gross.

Ich sehe zwar keinen Farbverlauf (wieso auch ?), aber alles ist weiss, was auch logisch ist, weil man quasi nur ein irre aufgeblasenes weisses Sprite sieht.
Lustig, bei mir ist ein Farbverlauf von einer weißen Box nach irgenwas von Türkis oder ähnlich. Frag mich, woher die Farben kommen, wenn doch alles RGB(255,255,255) ist. Auch wenn ich das auskommentiere ändert sich nichts.
Beim Schliessen wird die Messagebox im Bereich bereich der Höhe in der Farbe abgesetzt.

Verfasst: 15.08.2006 23:01
von Frogger
Mhh man merkt mir also doch noch die alten 3.9x Zeiten an :oops:
Ok das mit dem TimeOut hab ich tatsächlich übersehen.


So läuft es bei mir aber ein Farbverlauf kann bei diesem Code nun wirklich nicht entstehen

Code: Alles auswählen

If InitSprite() = 0
  MessageRequester("Error", "Fehlercode 1", #MB_OK|#MB_ICONERROR)
  End
EndIf
If InitSound() = 0
  MessageRequester("Error", "Fehlercode 2", #MB_OK|#MB_ICONERROR)
  End
EndIf
If InitKeyboard() = 0
  MessageRequester("Error", "Fehlercode 3", #MB_OK|#MB_ICONERROR)
  End
EndIf
If InitMouse() = 0
  MessageRequester("Error", "Fehlercode 4", #MB_OK|#MB_ICONERROR)
  End
EndIf


Enumeration
  #window_1
  
  #box
EndEnumeration

#WindowWidth = 400
#WindowHeight = 300

Global Ball_X.l = 0
Global Ball_Y.l = 0

Procedure Fenster()
  If OpenWindow(#window_1,0,0,#WindowWidth,#WindowHeight,"MiniGame by Alexander N",#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
    If CreateGadgetList(WindowID(#window_1))
      If OpenWindowedScreen(WindowID(#window_1),0,0,#WindowWidth,#WindowHeight,1,0,0)
        
        CreateSprite(#box,10,10)
        StartDrawing(SpriteOutput(#box))
        Box(0,0,10,10,RGB(255,255,255))
        StopDrawing()
      EndIf
    EndIf
  EndIf
EndProcedure

Procedure ende()
  End
EndProcedure






Fenster()
Repeat
   
  event = WaitWindowEvent(10)
  
  WindowID = EventWindow()
  
  GadgetID = EventGadget()
  
  EventType = EventType()
  
  
  
  If event = #PB_Event_CloseWindow
    Select MessageRequester("Ende", "Wollen sie wirklich beenden?", #MB_YESNO|#MB_ICONQUESTION)
      Case #IDYES
        ende()
    EndSelect
  EndIf
  
  
  ExamineKeyboard()
  ClearScreen($000000)
  
  For i = 0 To #WindowWidth Step 10
  DisplaySprite(#box,i,0)  ;wenn ich das hier auskommentier habe ich einen normalen schwarzen hintergund.. wenn nicht kommt bei mir ein farbverlauf.. oder macht das nur meine Grafikkarte?
  Next
   
  FlipBuffers()
  
ForEver

Verfasst: 15.08.2006 23:12
von Kaeru Gaman
@axerus

wie bist du denn drauf gekommen, diese argumente für OpenScreen() zu wählen?

Code: Alles auswählen

OpenWindowedScreen(WindowID(#window_1),0,0,1,1,1,0,0)

Verfasst: 15.08.2006 23:22
von Falko
Jetzt habe ich noch einen weissen Balken über dem Schwarzen Hintergrund im Windows. Vielleicht auch noch die Höhe korrigieren?

If OpenWindowedScreen(WindowID(#window_1),0,-10,#WindowWidth,#WindowHeight,1,0,0)