提交 f07523df 编写于 作者: P pTalanov

"Hello, Kotlin" example working with the new library

上级 527c4585
/* /*
This example is just simple text floating around. If u are using chrome, there is a bug that spoil the visuals. This shows simple text floating around.
*/ */
package hello package hello
import js.* import js.dom.html5.*
import html5.* import js.dom.html.window
import jquery.* import js.jquery.*
val context = getContext() val canvas: HTMLCanvasElement
val height = getCanvas().height get() {
val width = getCanvas().width return window.document.getElementsByTagName("canvas").item(0)!! as HTMLCanvasElement
}
// class representing a floating text val context: CanvasContext
class HelloKotlin() { get() {
var relX = 0.2 + 0.2 * Math.random() return canvas.getContext("2d")!!
var relY = 0.4 + 0.2 * Math.random() }
val absX : Double
get() = (relX * width)
val absY : Double
get() = (relY * height)
var relXVelocity = randomVelocity() val width: Double
var relYVelocity = randomVelocity() get() {
return canvas.width
}
val height: Double
get() {
return canvas.height
}
val message = "Hello, Kotlin!"
val textHeightInPixels = 20
{
context.font = "bold ${textHeightInPixels}px Georgia, serif"
}
val textWidthInPixels = context.measureText(message).width
fun draw() { // class representing a floating text
context.save() class HelloKotlin() {
move() var relX = 0.2 + 0.2 * Math.random()
// if you using chrome chances are good you wont see the shadow var relY = 0.4 + 0.2 * Math.random()
context.shadowColor = "#000000"
context.shadowBlur = 5.0 val absX: Double
context.shadowOffsetX = -4.0 get() = (relX * width)
context.shadowOffsetY = 4.0 val absY: Double
context.fillStyle = "rgb(242,160,110)" get() = (relY * height)
context.fillText(message, absX.toInt(), absY.toInt())
context.restore() var relXVelocity = randomVelocity()
} var relYVelocity = randomVelocity()
fun move() {
val relTextWidth = textWidthInPixels / width val message = "Hello, Kotlin!"
if (relX > (1.0 - relTextWidth - relXVelocity.abs) || relX < relXVelocity.abs) { val textHeightInPixels = 20
relXVelocity *= -1 {
context.font = "bold ${textHeightInPixels}px Georgia, serif"
} }
val relTextHeight = textHeightInPixels / height val textWidthInPixels = context.measureText(message)!!.width
if (relY > (1.0 - relYVelocity.abs) || relY < relYVelocity.abs + relTextHeight) {
relYVelocity *= -1 fun draw() {
context.save()
move()
// if you using chrome chances are good you wont see the shadow
context.shadowColor = "#000000"
context.shadowBlur = 5.0
context.shadowOffsetX = - 4.0
context.shadowOffsetY = 4.0
context.fillStyle = "rgb(242,160,110)"
context.fillText(message, absX.toInt(), absY.toInt())
context.restore()
} }
relX += relXVelocity
relY += relYVelocity
}
fun randomVelocity() = 0.03 * Math.random() * (if (Math.random() < 0.5) 1 else -1) fun move() {
val relTextWidth = textWidthInPixels / width
if (relX > (1.0 - relTextWidth - relXVelocity.abs) || relX < relXVelocity.abs) {
relXVelocity *= - 1
}
val relTextHeight = textHeightInPixels / height
if (relY > (1.0 - relYVelocity.abs) || relY < relYVelocity.abs + relTextHeight) {
relYVelocity *= - 1
}
relX += relXVelocity
relY += relYVelocity
}
fun randomVelocity() = 0.03 * Math.random() * (if (Math.random() < 0.5) 1 else - 1)
val Double.abs : Double
get() = if (this > 0) this else -this val Double.abs: Double
get() = if (this > 0) this else - this
} }
fun renderBackground() { fun renderBackground() {
context.save() context.save()
context.fillStyle = "#5C7EED" context.fillStyle = "#5C7EED"
context.fillRect(0, 0, width, height) context.fillRect(0, 0, width, height)
context.restore() context.restore()
} }
fun main(args : Array<String>) { fun main(args: Array<String>) {
val interval = 50 jq {
// we pass a literal that constructs a new HelloKotlin object val interval = 50
val logos = Array(3) { // we pass a literal that constructs a new HelloKotlin object
HelloKotlin() val logos = Array(3) {
} HelloKotlin()
jq { }
setInterval({
renderBackground() setInterval({
for (logo in logos) { renderBackground()
logo.draw() for (logo in logos) {
} logo.draw()
}, interval) }
} }, interval)
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册