/* ĊĠĠĠ ĠThis Ġexample Ġis Ġjust Ġsimple Ġtext Ġfloating Ġaround . ĠIf Ġu Ġare Ġusing Ġchrome , Ġthere Ġis Ġa Ġbug Ġthat Ġspo il Ġthe Ġvisual s . Ċ */ Ċ package Ġhello Ċ Ċ import Ġjs .* Ċ import Ġhtml 5 .* Ċ import Ġjquery .* Ċ Ċ val Ġcontext Ġ= ĠgetContext () Ċ val Ġheight Ġ= Ġget Canvas (). height Ċ val Ġwidth Ġ= Ġget Canvas (). width Ċ Ċ // Ġclass Ġrepresenting Ġa Ġfloating Ġtext Ċ class ĠHello Kotlin () Ġ{ ĊĠĠĠ Ġvar Ġrel X Ġ= Ġ 0 . 2 Ġ+ Ġ 0 . 2 Ġ* ĠMath . random () ĊĠĠĠ Ġvar Ġrel Y Ġ= Ġ 0 . 4 Ġ+ Ġ 0 . 2 Ġ* ĠMath . random () ĊĊĠĠĠ Ġval Ġabs X Ġ: ĠDouble ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ( rel X Ġ* Ġwidth ) ĊĠĠĠ Ġval Ġabs Y Ġ: ĠDouble ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ( rel Y Ġ* Ġheight ) ĊĊĠĠĠ Ġvar Ġrel X Velocity Ġ= Ġrandom Velocity () ĊĠĠĠ Ġvar Ġrel Y Velocity Ġ= Ġrandom Velocity () ĊĊĊĠĠĠ Ġval Ġmessage Ġ= Ġ" Hello , ĠKotlin !" ĊĠĠĠ Ġval Ġtext Height In Pixels Ġ= Ġ 6 0 ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . font Ġ= Ġ" bold Ġ${ text Height In Pixels } px ĠGe org ia , Ġserif " ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġtext Width In Pixels Ġ= Ġcontext . measure Text ( message ). width ĊĊĠĠĠ Ġfun Ġdraw () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . save () ĊĠĠĠĠĠĠĠ Ġmove () ĊĠĠĠĠĠĠĠ Ġ// Ġif Ġyou Ġusing Ġchrome Ġch ances Ġare Ġgood Ġyou Ġw ont Ġsee Ġthe Ġshadow ĊĠĠĠĠĠĠĠ Ġcontext . shadow Color Ġ= Ġ"# 0 0 0 0 0 0 " ĊĠĠĠĠĠĠĠ Ġcontext . shadow Blur Ġ= Ġ 5 . 0 ĊĠĠĠĠĠĠĠ Ġcontext . shadow Offset X Ġ= Ġ- 4 . 0 ĊĠĠĠĠĠĠĠ Ġcontext . shadow Offset Y Ġ= Ġ 4 . 0 ĊĠĠĠĠĠĠĠ Ġcontext . fillStyle Ġ= Ġ" rgb ( 2 4 2 , 1 6 0 , 1 1 0 )" ĊĠĠĠĠĠĠĠ Ġcontext . fill Text ( message , Ġabs X , Ġabs Y ) ĊĠĠĠĠĠĠĠ Ġcontext . restore () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmove () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrel Text Width Ġ= Ġtext Width In Pixels Ġ/ Ġwidth ĊĠĠĠĠĠĠĠ Ġif Ġ( rel X Ġ> Ġ( 1 . 0 Ġ- Ġrel Text Width Ġ- Ġrel X Velocity . abs ) Ġ|| Ġrel X Ġ< Ġ Ġrel X Velocity . abs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrel X Velocity Ġ*= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrel Text Height Ġ= Ġtext Height In Pixels Ġ/ Ġheight ĊĠĠĠĠĠĠĠ Ġif Ġ( rel Y Ġ> Ġ( 1 . 0 Ġ- Ġrel Y Velocity . abs ) Ġ|| Ġrel Y Ġ< Ġrel Y Velocity . abs Ġ+ Ġrel Text Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrel Y Velocity Ġ*= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrel X Ġ+= Ġrel X Velocity ĊĠĠĠĠĠĠĠ Ġrel Y Ġ+= Ġrel Y Velocity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrandom Velocity () Ġ= Ġ 0 . 0 3 Ġ* ĠMath . random () Ġ* Ġ( if Ġ( Math . random () Ġ< Ġ 0 . 5 ) Ġ 1 Ġelse Ġ- 1 ) ĊĊĊĠĠĠ Ġval ĠDouble . abs Ġ: ĠDouble ĊĠĠĠ Ġget () Ġ= Ġif Ġ( this Ġ> Ġ 0 ) Ġthis Ġelse Ġ- this Ċ } Ċ Ċ fun Ġrender Background () Ġ{ ĊĠĠĠ Ġcontext . save () ĊĠĠĠ Ġcontext . fillStyle Ġ= Ġ"# 5 C 7 E ED " ĊĠĠĠ Ġcontext . fillRect ( 0 . 0 , Ġ 0 . 0 , Ġwidth . toDouble (), Ġheight . toDouble ()) ĊĠĠĠ Ġcontext . restore () Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġinterval Ġ= Ġ 5 0 ĊĠĠĠ Ġ// Ġwe Ġpass Ġa Ġliteral Ġthat Ġconstructs Ġa Ġnew ĠHello Kotlin Ġobject ĊĠĠĠ Ġval Ġlog os Ġ= ĠArray ( 3 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠHello Kotlin () ĊĠĠĠ Ġ} ĊĠĠĠ Ġjq Ġ{ ĊĠĠĠĠĠĠĠ ĠsetInterval ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Background () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( logo Ġin Ġlog os ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogo . draw () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġinterval ) ĊĠĠĠ Ġ} Ċ } ĊĊĊ