Wie kann ich einen Sprite ein und wieder ausblenden lassen ?
Funktioniert einwandfrei, deine Augen sind höchstens zu langsam...
>Hast du ein kurzes Stück Coding, mit dem du dein Problem darstellen kannst ?
Hättest du dein Codeschnipselchen mal ausgeführt *haha* hättest du gemerkt das dein Codeschnipselchen ganz andere Fehler verursacht...
Ergo wenn man Hilfe will sollte man auch dafür sorgen das Helfer auch helfen können, ich (und viele andere) hab nämlich normalerweise keine Lust extra noch ne Testumgebung für anderer leutz Probleme zu schaffen...
>Hast du ein kurzes Stück Coding, mit dem du dein Problem darstellen kannst ?
Hättest du dein Codeschnipselchen mal ausgeführt *haha* hättest du gemerkt das dein Codeschnipselchen ganz andere Fehler verursacht...
Ergo wenn man Hilfe will sollte man auch dafür sorgen das Helfer auch helfen können, ich (und viele andere) hab nämlich normalerweise keine Lust extra noch ne Testumgebung für anderer leutz Probleme zu schaffen...
Code: Alles auswählen
InitSprite()
UsePNGImageDecoder()
X.w
OpenScreen(1024,768,32,"Test")
LoadSprite(0,"Pik.png")
If X < 254
Repeat
DisplayTranslucentSprite(0, 0, 0, X)
X+1
FlipBuffers()
Until X = 255
EndIf
PS: Meintest du das mit dem Code so ?
Eigentlich eher so:
Den Source kann jeder (zumindest WIN-User) direkt in PB ausführen da jeder die Grafik Geebee2.bmp mit der Installation von PB an der angegebenen Stelle hat 
UNd wie gesagt bei mir tritt da kein Fehler auf, egal ob ALT+TAB, ALT+F4 oder Windoof-Taste funktioniert einwandfrei und wird alles korekt dargestellt...
Code: Alles auswählen
InitSprite()
X = 0
OpenScreen(1024,768,32,"Test")
LoadSprite(0,#PB_Compiler_Home + "\Examples\Sources\Data\Geebee2.bmp")
If X < 254
Repeat
DisplayTranslucentSprite(0, 0, 0, X)
X+1
FlipBuffers()
Delay(250)
Until X = 255
EndIf

UNd wie gesagt bei mir tritt da kein Fehler auf, egal ob ALT+TAB, ALT+F4 oder Windoof-Taste funktioniert einwandfrei und wird alles korekt dargestellt...
Der Code funktioniert... das ganze ist nur furchtbar entsetzlich langsam, weil du die Softwarevariante von TransparentSprite im Truecolormodus nutzt.
Dazu muss jeder Pixel des Sprites einmal langsam aus dem Videospeicher gelesen werden, dann verarbeitet und dann wieder in den GRafikspeicher geschrieben.
Dazu dann noch das dicke Delay.
Wenn du mit Transparenz arbeiten willst dann nimm unbedingt Sprite3D und überlas diese Dinge der Grafikkarte. Dann ist das ganze auch schnell genug.
Dazu muss jeder Pixel des Sprites einmal langsam aus dem Videospeicher gelesen werden, dann verarbeitet und dann wieder in den GRafikspeicher geschrieben.
Dazu dann noch das dicke Delay.
Wenn du mit Transparenz arbeiten willst dann nimm unbedingt Sprite3D und überlas diese Dinge der Grafikkarte. Dann ist das ganze auch schnell genug.
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(1024,768,32,"Test")
LoadSprite(0,#PB_Compiler_Home+"\Examples\Sources\Data\Geebee2.bmp")
X = 0
Repeat
DisplayTranslucentSprite(0, 0, 0, X)
If X<255
X+1
EndIf
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
>Dazu dann noch das dicke Delay.
Das Delay ist von mir (nit von Fussel) um das "transparent werden" sichtbar zu machen, ich hab einfach mal angenommen das es sonst kein normaler Mensch wahrnehemen kann da ne Repeatschleife mit dem hier genutzten Aufbau ja NUR 3.298.076 Durchläufe pro Sekunde macht (auf meinem Laptop mit 1,6GHz...)
Das Delay ist von mir (nit von Fussel) um das "transparent werden" sichtbar zu machen, ich hab einfach mal angenommen das es sonst kein normaler Mensch wahrnehemen kann da ne Repeatschleife mit dem hier genutzten Aufbau ja NUR 3.298.076 Durchläufe pro Sekunde macht (auf meinem Laptop mit 1,6GHz...)
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Nicht wirklich. Der Punkt ist das er den Befehl einfach in einen Start-/StopSpecialFX() Block packen muss und dann lübt dat.Wenn du mit Transparenz arbeiten willst dann nimm unbedingt Sprite3D ...
Windows 10 Pro, 64-Bit / Outtakes | Derek
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Also hab ich das jetzt richtig verstanden ... Mein Code funktioniert, es treten keine Fehler auf aber er ist etwas zu langsam...
Oder ?
PS: Ich hab mal ein video gemacht, dass mein Problem teilweise darstellt ^^. An der Stell wo man das Flugzeug sieht, blinkt der Bildschirm (Das Prog war zu langsam ^^.) Hier ist der Link : http://rpgfire.lunaticgames.org/e107_fi ... roblem.rar
Oder ?
PS: Ich hab mal ein video gemacht, dass mein Problem teilweise darstellt ^^. An der Stell wo man das Flugzeug sieht, blinkt der Bildschirm (Das Prog war zu langsam ^^.) Hier ist der Link : http://rpgfire.lunaticgames.org/e107_fi ... roblem.rar
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Das Video ist überflüssig. Guckst du hier:
Code: Alles auswählen
InitSprite() : InitKeyboard()
OpenWindow(0,0,0,640,480,"void",#WS_SYSMENU | #WS_CAPTION | 1)
OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
CreateSprite(0,300,300,#PB_Sprite_Memory)
StartDrawing(SpriteOutput(0))
For i=0 To 299
Box(0,i,300,1,RGB(255,i*255/299,0))
Next
StopDrawing()
SetFrameRate(60)
Repeat
EventID = WindowEvent()
ExamineKeyboard()
If tval = 255 : tmode = 1 : EndIf
If tval = 0 : tmode = 0 : EndIf
If tmode : tval - 1 : Else : tval + 1 :EndIf
StartSpecialFX()
ClearScreen(0)
DisplayTranslucentSprite(0,100,100,tval)
StopSpecialFX()
FlipBuffers()
Until KeyboardPushed(1) Or EventID = 16
Windows 10 Pro, 64-Bit / Outtakes | Derek