About Monkey 2 › Forums › Monkey 2 Code Library › Typewrite text effect
This topic contains 1 reply, has 1 voice, and was last updated by juliocmfj 4 months, 3 weeks ago.
Viewing 2 posts - 1 through 2 (of 2 total)
-
AuthorPosts
-
September 30, 2018 at 5:20 am #15487
In my main code, it is separated by modules. I put the two together just for example …
Monkey123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118Namespace rpgf#Import "<std>"#Import "<mojo>"Using std..Using mojo..Class TypewriteTextClass LineField text:StringField count:IntMethod New:Void(text:String)Self.text = textEndEndProtectedField lines:List<Line>Field timer:TimerField currentLine:IntPublicMethod New:Void()lines = New List<Line>()EndMethod AddLine:Void(text:String)lines.AddLast(New Line(text))EndMethod SetTimer:Void(seconds:Double)timer = New Timer(seconds, Update)timer.Suspended = TrueEndMethod Draw:Void(canvas:Canvas, x:Float, y:Float)timer.Suspended = FalseLocal allLines:Line[] = lines.ToArray()Local i:Int = 0Local currentLineTemp:Int = 0For i = 0 Until allLines.Lengthcanvas.DrawText(allLines[i].text.Left(allLines[i].count), x, y + (canvas.Font.Height * i))NextEndProtectedMethod Update:Void()timer.Suspended = FalseLocal allLines:Line[] = lines.ToArray()allLines[currentLine].count += 1If (allLines[currentLine].count > allLines[currentLine].text.Length)currentLine += 1EndIf (currentLine >= lines.Count())currentLine = lines.Count() - 1EndEndEndClass MainWindow Extends WindowField targetFps:TimerField typewriteText:TypewriteTextMethod OnMeasure:Vec2i() OverrideReturn New Vec2i(320, 240)EndMethod New:Void()Super.New("RPG-Framework", 640, 480, WindowFlags.Center)Layout = "letterbox"targetFps = New Timer(60, OnUpdate)typewriteText = New TypewriteText()typewriteText.AddLine("First line...")typewriteText.AddLine("Second line...")typewriteText.AddLine("Third line...")typewriteText.AddLine("Fourth line...")typewriteText.AddLine("Fifith line.")typewriteText.AddLine("....................")typewriteText.SetTimer(30)EndMethod OnUpdate:Void()App.RequestRender()If (Keyboard.KeyHit(Key.Escape))App.Terminate()EndEndMethod OnRender( canvas:Canvas ) Override' App.RequestRender()canvas.TextureFilteringEnabled = Falsecanvas.Clear(Color.Black)canvas.Color = Color.WhitetypewriteText.Draw(canvas, 0, 0)canvas.Color = Color.Whitecanvas.DrawText("FPS: ", 320 - 60, 0)canvas.Color = Color.Redcanvas.DrawText("" + App.FPS, 320 - 60 + canvas.Font.TextWidth("FPS: "), 0)EndEndFunction Main:Void()New AppInstance()New MainWindow()App.Run()EndSeptember 30, 2018 at 6:03 am #15488Update…
Monkey123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127Namespace rpgf#Import "<std>"#Import "<mojo>"Using std..Using mojo..Class TypewriteTextClass LineField text:StringField count:IntMethod New:Void(text:String)Self.text = textEndEndProtectedField lines:List<Line>Field timer:TimerField currentLine:IntPublicMethod New:Void()lines = New List<Line>()EndMethod AddLine:Void(text:String)If Not (text.Contains("\n"))lines.AddLast(New Line(text))ElseLocal textArray:String[] = text.Split("\n")Local textArrayLength:Int = textArray.LengthLocal i:Int = 0For i = 0 Until textArrayLengthlines.AddLast(New Line(textArray[i]))NextEndEndMethod SetTimer:Void(seconds:Double)timer = New Timer(seconds, Update)timer.Suspended = TrueEndMethod Draw:Void(canvas:Canvas, x:Float, y:Float)timer.Suspended = FalseLocal allLines:Line[] = lines.ToArray()Local i:Int = 0Local currentLineTemp:Int = 0For i = 0 Until allLines.Lengthcanvas.DrawText(allLines[i].text.Left(allLines[i].count), x, y + (canvas.Font.Height * i))NextEndProtectedMethod Update:Void()timer.Suspended = FalseLocal allLines:Line[] = lines.ToArray()allLines[currentLine].count += 1If (allLines[currentLine].count > allLines[currentLine].text.Length)currentLine += 1EndIf (currentLine >= lines.Count())currentLine = lines.Count() - 1EndEndEndClass MainWindow Extends WindowField targetFps:TimerField typewriteText:TypewriteTextMethod OnMeasure:Vec2i() OverrideReturn New Vec2i(320, 240)EndMethod New:Void()Super.New("RPG-Framework", 640, 480, WindowFlags.Center)Layout = "letterbox"targetFps = New Timer(60, OnUpdate)typewriteText = New TypewriteText()' typewriteText.AddLine("First line...")' typewriteText.AddLine("Second line...")' typewriteText.AddLine("Third line...")' typewriteText.AddLine("Fourth line...")' typewriteText.AddLine("Fifith line.")' typewriteText.AddLine("....................")typewriteText.AddLine("First line...\nSecond line...\nThird line...\nFourth line...\nFifith line.\n....................")typewriteText.SetTimer(30)EndMethod OnUpdate:Void()App.RequestRender()If (Keyboard.KeyHit(Key.Escape))App.Terminate()EndEndMethod OnRender( canvas:Canvas ) Override' App.RequestRender()canvas.TextureFilteringEnabled = Falsecanvas.Clear(Color.Black)canvas.Color = Color.WhitetypewriteText.Draw(canvas, 0, 0)canvas.Color = Color.Whitecanvas.DrawText("FPS: ", 320 - 60, 0)canvas.Color = Color.Redcanvas.DrawText("" + App.FPS, 320 - 60 + canvas.Font.TextWidth("FPS: "), 0)EndEndFunction Main:Void()New AppInstance()New MainWindow()App.Run()EndMonkey123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127Namespace rpgf#Import "<std>"#Import "<mojo>"Using std..Using mojo..Class TypewriteTextClass LineField text:StringField count:IntMethod New:Void(text:String)Self.text = textEndEndProtectedField lines:List<Line>Field timer:TimerField currentLine:IntPublicMethod New:Void()lines = New List<Line>()EndMethod AddLine:Void(text:String)If Not (text.Contains("\n"))lines.AddLast(New Line(text))ElseLocal textArray:String[] = text.Split("\n")Local textArrayLength:Int = textArray.LengthLocal i:Int = 0For i = 0 Until textArrayLengthlines.AddLast(New Line(textArray[i]))NextEndEndMethod SetTimer:Void(seconds:Double)timer = New Timer(seconds, Update)timer.Suspended = TrueEndMethod Draw:Void(canvas:Canvas, x:Float, y:Float)timer.Suspended = FalseLocal allLines:Line[] = lines.ToArray()Local i:Int = 0Local currentLineTemp:Int = 0For i = 0 Until allLines.Lengthcanvas.DrawText(allLines[i].text.Left(allLines[i].count), x, y + (canvas.Font.Height * i))NextEndProtectedMethod Update:Void()timer.Suspended = FalseLocal allLines:Line[] = lines.ToArray()allLines[currentLine].count += 1If (allLines[currentLine].count > allLines[currentLine].text.Length)currentLine += 1EndIf (currentLine >= lines.Count())currentLine = lines.Count() - 1EndEndEndClass MainWindow Extends WindowField targetFps:TimerField typewriteText:TypewriteTextMethod OnMeasure:Vec2i() OverrideReturn New Vec2i(320, 240)EndMethod New:Void()Super.New("RPG-Framework", 640, 480, WindowFlags.Center)Layout = "letterbox"targetFps = New Timer(60, OnUpdate)typewriteText = New TypewriteText()' typewriteText.AddLine("First line...")' typewriteText.AddLine("Second line...")' typewriteText.AddLine("Third line...")' typewriteText.AddLine("Fourth line...")' typewriteText.AddLine("Fifith line.")' typewriteText.AddLine("....................")typewriteText.AddLine("First line...\nSecond line...\nThird line...\nFourth line...\nFifith line.\n....................")typewriteText.SetTimer(30)EndMethod OnUpdate:Void()App.RequestRender()If (Keyboard.KeyHit(Key.Escape))App.Terminate()EndEndMethod OnRender( canvas:Canvas ) Override' App.RequestRender()canvas.TextureFilteringEnabled = Falsecanvas.Clear(Color.Black)canvas.Color = Color.WhitetypewriteText.Draw(canvas, 0, 0)canvas.Color = Color.Whitecanvas.DrawText("FPS: ", 320 - 60, 0)canvas.Color = Color.Redcanvas.DrawText("" + App.FPS, 320 - 60 + canvas.Font.TextWidth("FPS: "), 0)EndEndFunction Main:Void()New AppInstance()New MainWindow()App.Run()End -
AuthorPosts
Viewing 2 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic.