Typing Effect

BlitzMax Forums/BlitzMax Beginners Area/Typing Effect

Is there a way to implement a "typing" effect when displaying text? Maybe like the lyrics to "Still Alive" that are shown when you beat Portal?

Thanks!

You mean the visual end? I think for that, even a code archives entry exists.

I converted the BB version of TypeRiter Text from the code archives to BMX and it doesn't work correctly. I would also like to give the x and y location of the text to be "typed."

Converted means that you took the code and rewrote it?
Import BB is pointless in that case if you wanted to really use the code.

And giving an X, Y location should be a simple change, shouldn't it?

you can post the code here if you want and I take a look

I converted the BB version of TypeRiter Text from the code archives to BMX

Sorry, I meant I imported it.

I would try and make my own but I am unsure on how to do it. With Blitz3D, since there wasn't any console windows, I used:
Function Rite(a$)
	num=Len(a$)
	For i=1 To num
		Write Mid$(a$,i,1)
		Delay 100
	Next
	Print
End Function
but I don't have Blitz3D anymore. That code also doesn't support x,y.

Well you can not write into the console if you want to have a position.
In BM you use the Text Command which has X, Y if you want a position. This needs graphics window.

Well you can not write into the console if you want to have a position.

Yes, I know. I used that code with Blitz3D because a console window didn't come up when you used Print because Blitz3D doesn't support console windows.

In BM you use the Text Command which has X, Y if you want a position. This needs graphics window.

Yes, I know. But I need a way to achieve the "typing" effect.

I have a feeling I'm not making myself clear? :/

All you've done to explain the effect you want is to put it in quotes, so no you aren't being very clear.

Alright then.

I want a typing effect that supports x,y position. I want it in BlitzMax. I want it to resemble this: YOUTUBE VIDEO

And where is the problem?

Thats just the text command but with an alternating char at the end, known as "_" :-)
The alternation is handled by measuring time differences.

If you want multiple lines, use an array of string to store them and apply the _ to the line with the highest index at the end when printing.

And where is the problem?

I don't know how to do it.

...with an alternating char at the end, known as "_" :-)

Thanks for clearing that up.

I do not want the underscore. I just want the text to be typed on to the screen given the x and y location.

Is this what you wanted?

Graphics(640,480)

Function TeleType(text:String,x:Int,y:Int)
	For Local i:Int=1 To Len(text)
		DrawText(Left(text,i),x,y)
		Delay(60)
		Flip
	Next
EndFunction

TeleType("This is a test",0,0)
Teletype("Please press Any Key to Exit.",0,12)

Teletype("Oh, by the way, the cake is a lie :)",0,48)

WaitKey()
End


Yes! Thanks Big&.

Oh my god! I'm not going to bother playing all the way through Portal now. This guy has given away what happens at the end :-)

@Big&: Thanks for this text processing function.

Problem: Last character of each line blinks until all lines are done.
Solution: End all lines with a "space".
Problem: When routine is done, the last character in line one dissappears.
Solution: End all lines with a "space".

Question: Is the following syntax just an alternate method?
Graphics(640,480) and Delay(60)
I've never used parantheses around these numbers before.

Answer: I don't think it matters if you do use or don't use parentheses.