blob: 3eba6faa5257f52d8704e00e59ee125b180d1d3a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import Math._
import org.scalajs.dom
import scala.scalajs.js.annotation.JSExport
@JSExport
object Example extends{
@JSExport
def main(canvas: dom.HTMLCanvasElement) = {
def clear() = {
canvas.width = canvas.parentElement.clientWidth
canvas.height = canvas.parentElement.clientHeight
}
clear()
val renderer =
canvas.getContext("2d")
.asInstanceOf[dom.CanvasRenderingContext2D]
def h = canvas.height
def w = canvas.width
/*example*/
var x = 0.0
type Graph = (String, Double => Double)
val graphs = Seq[Graph](
("red", sin),
("green", x => 1 - abs(x % 4 - 2)),
("blue", x => pow(sin(x/12), 2) * sin(x))
).zipWithIndex
dom.setInterval(() => {
x = (x + 1) % w; if (x == 0) clear()
for (((color, f), i) <- graphs) {
val offset = h / 3 * (i + 0.5)
val y = f(x / w * 75) * h / 30
renderer.fillStyle = color
renderer.fillRect(x, y + offset, 3, 3)
}
}, 20)
}
}
|