Seite 1 von 1

Beta7:CloseScreen()?:GELÖST^^

Verfasst: 09.04.2006 13:49
von Marvin
Ich glaub ich hab nen Bug, es könnt aber auch sein, dass das extra so is. Erstmal: Ich nutze noch die Beta7, da aber bisher hier nichts von wegen diesem Thema geschrieben wurde, denk ich, dass es das auch noch in der neuen Beta9 gibt :| .
Ich bin grad am schreiben eines Programmes, dass unter anderem einen FullScreen benutzt. Dieser soll während des Programmablaufs geschlossen werden. Benutze ich also den Befehl

Code: Alles auswählen

CloseScreen()
wird aber das gesamte Programm beendet! (Das Programm is in einer Schleife, einen Break-Befehl benutz ich nich.) :?

P.S.: Wenns kein Bug is, währe es nett, wenn ihr mir erklärn könntet, wie's geht :wink:

//EDIT:Gelöst, image<>sprite (s. unten) :lol:

Re: Beta7:CloseScreen()?

Verfasst: 09.04.2006 14:14
von ts-soft
Marvin hat geschrieben: P.S.: Wenns kein Bug is, währe es nett, wenn ihr mir erklärn könntet, wie's geht :wink:
Steht eigentlich relativ deutlich in der Hilfe.

Verfasst: 09.04.2006 14:31
von Marvin
Die deutsche Hilfe hat geschrieben:CloseScreen()


Syntax

CloseScreen()

Beschreibung

Schließt den aktuellen Bildschirm (egal ob "Windowed" oder "Fullscreen" Modus). Nach dem Schließen eines Bildschirms, müssen alle Sprites erneut geladen werden, da das Bildschirmformat verloren geht und der Videospeicher freigegeben wird.

Ein(e) Applikation/Spiel kann problemlos während des Programmablaufs zwischen "Fullscreen" und "Windowed" Modus umschalten.

Unterstützte OS

Windows, Linux, MacOS X

<- ClipSprite() - Sprite Inhaltsverzeichnis - CopySprite() ->
:?

(Wie ich den Befehl normalerweise benutze, is mir klar. Ich meine bloß, wenns kein Bug ist, (wie) kann ich den Befehl dann verwenden, ohne dass das Programm beendet wird.../:->)

Verfasst: 09.04.2006 14:59
von ts-soft
wenn der screen geschlossen wurde, kann man ja nichts mehr sehen. man
kann auch keine sprites benutzen ohne screen usw. alle anderen befehle
funktionieren doch. ansonsten einen neuen screen erstellen. ohne code kann
ich dir aber keine tipps geben, ausser das deine logik irgendwo noch nicht
hinhaut.

Verfasst: 09.04.2006 15:14
von Marvin
nee, nee... ich glaub ich meins anders :oops: .
ich hab ein programm ähnlich wie mastereye (wenn dus kennst), wenn von einem andern computer ein befehl gesendet wird, öffnet sich ein screen. wird der wieder geschlossen, soll das programm trotzdem weiterlaufen und den screen evtl. nochmal öffnen... :|

ich will den code jetz hier eigentlich nich posten, aber hier die stelle, an ders immer abreißt:

Code: Alles auswählen

Repeat
  ExamineMouse()
  StartDrawing(ScreenOutput())
    DrawImage(ImageID(ss),0,0)
  StopDrawing()
  If mouses
    DisplayTransparentSprite(mouses,MouseX(),MouseY())
  EndIf
  FlipBuffers()
  If NetworkServerEvent()=2
    cid=EventClient()
    *tmem=AllocateMemory(1024)
    ReceiveNetworkData(cid,*tmem,1024)
    If PeekS(*tmem)="RS"
      FreeMemory(*tmem)
      Break
    EndIf
  EndIf
Until MouseButton(1) And MouseX()<21 And MouseY()<21
FreeSprite(ss)
FreeSprite(mouses)
CloseScreen()
ss is ein hintergrund, mouses ist ein mauszeiger...

es reißt wirklich ab, also der server is weg, in der prozessliste is das programm nich mehr da... also wirklich beendet :(

Verfasst: 09.04.2006 15:28
von MVXA
Das Programm läuft doch nach einem CloseScreen() normalerweise
weiter :?:

Verfasst: 09.04.2006 15:29
von ts-soft
wenn der code nach closescreen() zuende ist, sollte das normal sein :mrgreen:

Verfasst: 09.04.2006 15:31
von Marvin
nee <) , is nich zu ende, is wie gesagt eine (Repeat-ForEver-)Schleife...
(das läuft auf win98, kanns nur noch mal probiern...)

Verfasst: 09.04.2006 15:56
von ts-soft
Hier der Beweis: es geht weiter nach CloseScreen()

Code: Alles auswählen

If ExamineDesktops()
  width = DesktopWidth(0)
  height = DesktopHeight(0)
  depth = DesktopDepth(0)
EndIf
If width And height And depth

  If InitSprite() = #False : End : EndIf
nochmal:
  If OpenScreen(width, height, depth, "")
    Delay(10000)
    CloseScreen()
    Select MessageRequester("CloseScreen() Test", "Nochmal?", #PB_MessageRequester_YesNo|#MB_ICONQUESTION)
      Case #PB_MessageRequester_Yes
        Goto nochmal
      EndSelect
    EndIf
EndIf
:mrgreen:

Verfasst: 09.04.2006 16:46
von Marvin
oh der kleine fehler is ja peinlich... :oops:
ihr habts aber auch net rausgekriegt :mrgreen: :lol:

is ganz einfach:
Marvin hat geschrieben:

Code: Alles auswählen

Repeat
  ExamineMouse()
  StartDrawing(ScreenOutput())
    DrawImage(ImageID(ss),0,0)
  StopDrawing()
  If mouses
    DisplayTransparentSprite(mouses,MouseX(),MouseY())
  EndIf
  FlipBuffers()
  If NetworkServerEvent()=2
    cid=EventClient()
    *tmem=AllocateMemory(1024)
    ReceiveNetworkData(cid,*tmem,1024)
    If PeekS(*tmem)="RS"
      FreeMemory(*tmem)
      Break
    EndIf
  EndIf
Until MouseButton(1) And MouseX()<21 And MouseY()<21
FreeSprite(ss)
FreeSprite(mouses)
CloseScreen()
ss is doch ein image und kein sprite! /:->
(Ihr hättets aber auch rauskriegen können, siehe DrawImage(ImageID(ss),0,0) :lol:)

war also nich das CloseScreen() sondern das FreeSprite(ss)! *andenkopfhau* :roll:

:iamwithstupid:


P.S.: Wäre evtl. nett, wenn ein mod das in Anfänger oder Allgemein verschieben könnte... :wink: