Green Snake hat geschrieben:- anstatt diesen linien sollte es ein bild vom pfad C:\Mein\Bild.bmp sein,
Ersetze das CreateSprite() durch das auskommentierte
LoadSprite():
Code: Alles auswählen
;
; by Danilo, 17.04.2005
;
If InitSprite()=0 Or InitKeyboard()=0
MessageRequester("ERROR","Cant initialize screen !",#MB_ICONERROR):End
EndIf
#w = 1024;1280
#h = 768;1024
#sn = "sinus"
#PI = 3.141592
#factor = 0.01
If OpenScreen(#w,#h,32,#sn)=0
If OpenScreen(#w,#h,24,#sn)=0
If OpenScreen(#w,#h,16,#sn)=0
If OpenScreen(#w,#h,08,#sn)=0
MessageRequester("ERROR","Cant open screen !",#MB_ICONERROR):End
EndIf:EndIf:EndIf:EndIf
If CreateSprite(1,200,200)=0
;If LoadSprite(1,"c:\mein\bild.bmp")=0
CloseScreen()
MessageRequester("ERROR","Cant load sprite !",#MB_ICONERROR):End
EndIf
sw = SpriteWidth(1)
sh = SpriteHeight(1)
oldtime = ElapsedMilliseconds()+20
Repeat
ExamineKeyboard()
While oldtime > ElapsedMilliseconds():Delay(1):Wend
oldtime = ElapsedMilliseconds()+20
FlipBuffers(0)
If IsScreenActive()
ClearScreen($FF,$88,$33)
y.f + 0.1
If y > 2*#PI : y = 0 : EndIf
x = #w/2-sw/2
For a = 0 To sw
ClipSprite(1,a,0,1,sh)
DisplaySprite(1,x,#h/2-sh/2+Sin(y+#factor*a)*70)
x+1
If x > 800 : x - 800 : EndIf
Next a
EndIf
Until KeyboardPushed(#PB_KEY_ESCAPE)
Green Snake hat geschrieben:- das ganze darf(sollte) nicht quer sein, so wie in deinem code, sondern aufgestellt.
Wie meinst Du das? Es ist egal ob das Bild mehr höher als breit ist.
Oder meinst Du die Wellen-Versetzung horizontal?
Dann checke das:
Code: Alles auswählen
;
; by Danilo, 17.04.2005
;
If InitSprite()=0 Or InitKeyboard()=0
MessageRequester("ERROR","Cant initialize screen !",#MB_ICONERROR):End
EndIf
#w = 1024;1280
#h = 768;1024
#sn = "sinus"
#PI = 3.141592
#factor = 0.01
If OpenScreen(#w,#h,32,#sn)=0
If OpenScreen(#w,#h,24,#sn)=0
If OpenScreen(#w,#h,16,#sn)=0
If OpenScreen(#w,#h,08,#sn)=0
MessageRequester("ERROR","Cant open screen !",#MB_ICONERROR):End
EndIf:EndIf:EndIf:EndIf
If CreateSprite(1,200,200)=0
;If LoadSprite(1,"c:\mein\bild.bmp")=0
CloseScreen()
MessageRequester("ERROR","Cant load sprite !",#MB_ICONERROR):End
EndIf
sw = SpriteWidth(1)
sh = SpriteHeight(1)
oldtime = ElapsedMilliseconds()+20
Repeat
ExamineKeyboard()
While oldtime > ElapsedMilliseconds():Delay(1):Wend
oldtime = ElapsedMilliseconds()+20
FlipBuffers(0)
If IsScreenActive()
ClearScreen($FF,$88,$33)
x.f + 0.1
If x > 2*#PI : x = 0 : EndIf
y = #h/2-sh/2
For a = 0 To sh
ClipSprite(1,0,a,sw,1)
DisplaySprite(1,#w/2-sw/2+Sin(x+#factor*a)*70,y)
y+1
Next a
EndIf
Until KeyboardPushed(#PB_KEY_ESCAPE)
Hier wird also horizontal geclippt und somit y versetzt.
BTW, hier noch ein "Quasi-3D-Effekt" der mir grad zufällig
passiert ist: Dabei sieht es aus als wenn es in die Tiefe zeigt:
Code: Alles auswählen
;
; by Danilo, 17.04.2005
;
If InitSprite()=0 Or InitKeyboard()=0
MessageRequester("ERROR","Cant initialize screen !",#MB_ICONERROR):End
EndIf
#w = 1024;1280
#h = 768;1024
#sn = "sinus"
#PI = 3.141592
#factor = 0.01
If OpenScreen(#w,#h,32,#sn)=0
If OpenScreen(#w,#h,24,#sn)=0
If OpenScreen(#w,#h,16,#sn)=0
If OpenScreen(#w,#h,08,#sn)=0
MessageRequester("ERROR","Cant open screen !",#MB_ICONERROR):End
EndIf:EndIf:EndIf:EndIf
If CreateSprite(1,200,200)=0
;If LoadSprite(1,"c:\mein\bild.bmp")=0
CloseScreen()
MessageRequester("ERROR","Cant load sprite !",#MB_ICONERROR):End
EndIf
sw = SpriteWidth(1)
sh = SpriteHeight(1)
oldtime = ElapsedMilliseconds()+20
Repeat
ExamineKeyboard()
While oldtime > ElapsedMilliseconds():Delay(1):Wend
oldtime = ElapsedMilliseconds()+20
FlipBuffers(0)
If IsScreenActive()
ClearScreen($FF,$88,$33)
x.f + 0.1
If x > 2*#PI : x = 0 : EndIf
y = #h/2-sh/2
For a = 0 To sh
ClipSprite(1,a,0,1,sh)
DisplaySprite(1,#w/2-sw/2+Sin(x+#factor*a)*70,y)
y+1
Next a
EndIf
Until KeyboardPushed(#PB_KEY_ESCAPE)
Das ist das 2. Beispiel mit dem Clipping vom 1. Beispiel,
also ein Zwischenprodukt.
