
aber funktioniert denn die ausstreckung mit den 3d sprites nicht?
dass sie den starwars effekt bekommen?
Code: Alles auswählen
InitSprite()
InitSprite3D()
file.s = OpenFileRequester("Text öffnen...","","Textdatei *.txt|*.txt",0)
If file = ""
End
EndIf
ReadFile(0,file)
NewList texta.s()
Repeat
AddElement(texta())
texta() = ReadString()
Until Eof(0)
CloseFile(0)
OpenScreen(800,600,32,"StarWars-Intro v1.0")
Dim fade.f(CountList(texta())-1)
Dim posy.l(CountList(texta())-1)
Dim zoom.f(CountList(texta())-1)
LoadFont(1, "Verdana", 24)
FirstElement(texta())
For x = 0 To CountList(texta())-1
CreateSprite(x,800,64,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(x))
DrawingMode(1)
FrontColor(255,255,0)
DrawingFont(UseFont(1))
DrawText(texta())
StopDrawing()
CreateSprite3D(x,x)
fade(x) = 255
posy(x) = x*64
zoom(x) = 1
NextElement(texta())
Next
Global a.f,b.f ,ar.f
Repeat
ExamineKeyboard()
Start3D()
For x = 0 To (CountList(texta())-1)
If fade(x) > 0
posy(x) - 1
EndIf
If posy(x) < 0 And fade(x) > 0
fade(x) - 0.5
zoom(x) + 0.5
b = 1 - zoom(x)/400
a = 1 - zoom(x)/800
TransformSprite3D(x,zoom(x),0,a,800-zoom(x),0,a,800-zoom(x)/2,64,b,zoom(x)/2,64,b)
DisplaySprite3D(x,0,600+posy(x),fade(x))
EndIf
Next
Stop3D()
FlipBuffers()
ClearScreen(0,0,0)
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End
Code: Alles auswählen
;- PB-StarWars
;-
;- Froggerprogger 06.08.2005
#ScreenX = 1024
#ScreenY = 768
#numLines = 19
#StretchFactor = 3.0
#HeightScale = 0.75
#WidthScale = 1.2
#FontSize = 36 ; pt
#LineHeight = 60 ; pixel
#SizeFactor = 1
#TextSpeed = 3.0
#LineSpace = 0.03
InitSprite()
InitKeyboard()
*font = LoadFont(#PB_Any, "Arial", #FontSize, #PB_Font_Bold |#PB_Font_HighQuality)
;- create the textlines
Dim Textlines.s(#numLines-1)
Textlines(0) = "Episode III"
Textlines(1) = "DIE RACHE DER SITH"
Textlines(2) = "Krieg! Die Republik zerfällt"
Textlines(3) = "unter den Angriffen des skrupellosen"
Textlines(4) = "Sith-Lords, Count Dooku."
Textlines(5) = "Es gibt Helden auf beiden Seiten."
Textlines(6) = "Das Böse ist überall."
Textlines(7) = ""
Textlines(8) = "Mit einem überwältigendem Schlag gelingt"
Textlines(9) = "es dem teuflischen Droidenanführer, General"
Textlines(10) = "Grievous, auf die Hauptwelt der Republic"
Textlines(11) = "vorzudringen und den Führer des Galaktischen"
Textlines(12) = "Senats, den Obersten Kanzler Palpatine, zu "
Textlines(13) = "entführen. Als die Droidenarmee der"
Textlines(14) = "Seperatisten mit der wertvollen Geisel"
Textlines(15) = "aus der belagerten Hauptstadt fliehen will,"
Textlines(16) = "leiten zwei Jedi-Ritter"
Textlines(17) = "eine verzweifelte Mission ein, um den"
Textlines(18) = "gefangenen Kanzler zu retten..."
;- get the linewidths
Dim LineWidths.l(#numLines-1)
tempImage = CreateImage(#PB_Any, 100, #LineHeight)
UseImage(tempImage)
StartDrawing(ImageOutput())
DrawingFont(UseFont(*font))
For i=0 To #numLines-1
LineWidths(i) = TextLength(Textlines(i))
Next
StopDrawing()
FreeImage(tempImage)
;- open a screen
OpenScreen(#ScreenX, #ScreenY, 32, "PB-StarWars")
ClearScreen(0,0,0)
StartDrawing(ScreenOutput())
DrawingMode(1)
FrontColor(255,200,60)
DrawText("please wait...")
StopDrawing()
FlipBuffers()
;- create and transform the images
Dim OrigTextLineImages.l(#numLines-1)
For i=0 To #numLines-1
lineWidth = LineWidths(i) + 10
tempImage = CreateImage(#PB_Any, lineWidth, #LineHeight)
Dim TempImage.l(lineWidth-1, #LineHeight-1)
UseImage(tempImage)
StartDrawing(ImageOutput())
Box(0,0,lineWidth,#LineHeight,0)
DrawingMode(1)
FrontColor(255,200,60)
DrawingFont(UseFont(*font))
Locate((lineWidth - TextLength(Textlines(i)))/ 2, 0)
DrawText(Textlines(i))
For j=0 To #LineHeight-1
For k=0 To lineWidth-1
TempImage(k, j) = Point(k,j)
Next
Next
StopDrawing()
FreeImage(tempImage)
CreateImage(i, lineWidth, #LineHeight)
UseImage(i)
StartDrawing(ImageOutput())
Box(0,0,lineWidth,#LineHeight,0)
For j=0 To #LineHeight-1
lineoffset.f = #StretchFactor * (#LineHeight-1 - j) / 1000.0
For k=0 To lineWidth/2 - 1
offset = lineoffset * k
If k+offset >= lineWidth/2
Break
EndIf
Plot(lineWidth/2 + k, j, TempImage(lineWidth/2 + k + offset, j))
Plot(lineWidth/2 - k, j, TempImage(lineWidth/2 - k - offset, j))
Next
Next
StopDrawing()
Next
;- display the images
starttime = ElapsedMilliseconds()
lastFpsTime = ElapsedMilliseconds()
framecounter = 0
firstlinedist.f = 1.0
Dim lastImagePosXY.l(#numLines-1, 1)
For i=0 To #numLines-1
lastImagePosXY(i, 0) = $80000000
lastImagePosXY(i, 1) = $7FFFFFFF
Next
Repeat
framecounter + 1
If ElapsedMilliseconds() - lastFpsTime > 1000
fps = framecounter
framecounter = 0
lastFpsTime = ElapsedMilliseconds()
EndIf
ClearScreen(0,0,0)
ExamineKeyboard()
StartDrawing(ScreenOutput())
Locate(0, 0)
DrawingMode(1)
FrontColor(100,100,100)
DrawText(Str(fps)+ " fps")
firstlinedist.f = 1.0 + #TextSpeed * 1.0 * (ElapsedMilliseconds() - starttime) / 100000.0
For i=0 To #numLines - 1
liney.f = firstlinedist - #LineSpace * (i * #HeightScale * #LineHeight) / (#numLines - 1)
If liney < 1.0
Break
EndIf
liney * liney
yposf.f = (#ScreenY * liney + #ScreenY) / (2.0 * liney)
sizeFac.f = (#SizeFactor * yposf) / 384.0 - 1.0
UseImage(i)
h = Int(ImageHeight() * sizeFac * #HeightScale)
w = Int(ImageWidth() * sizeFac * #WidthScale)
xpos = 512 - w/2
ypos = Int(yposf)
If xpos < lastImagePosXY.l(i, 0)
xpos = lastImagePosXY.l(i, 0)
EndIf
If ypos > lastImagePosXY.l(i, 1)
ypos = lastImagePosXY.l(i, 1)
EndIf
lastImagePosXY.l(i, 0) = xpos
lastImagePosXY.l(i, 1) = ypos
If ypos >= 768
Break
EndIf
If w > 0 And h > 0
DrawImage(UseImage(i), xpos, ypos, w, h)
EndIf
Next
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)