canvas 要素を使用してブラウザで基本的なストロボ ライトを作成しようとしています。setInterval が changeBG 関数を呼び出し続けて、ランダムな背景色に変更されることを期待しています。この関数は、単独では正常に機能しますが、setInterval によって呼び出された場合は機能しません。このページを firebug でプルアップしようとしたところ、色が定義されていないことがわかりました。これが問題のコードです。
<html>
<head>
<title>Strobe!</title>
<link rel="stylesheet" type="text/css" href="reset.css" />
<script type="text/javascript">
function changeBG(colors,ctx,canvas) {
ctx.fillStyle = colors[Math.floor(Math.random()*colors.length)]
ctx.fillRect(0,0,canvas.width,canvas.height)
}
function eventLoop() {
var colors = ['#000000','#ff0000','#00ff00','#0000ff','#ffff00','#ff00ff','#00ffff']
var canvas = document.getElementById('mainCanvas')
var ctx = canvas.getContext('2d')
canvas.width = window.innerWidth
canvas.height = window.innerHeight
//changeBG(colors,ctx,canvas)
setInterval("changeBG(colors,ctx,canvas)", 1000);
}
</script>
</head>
<body onload="eventLoop()">
<canvas id="mainCanvas" width="800" height="600">
</canvas>
</body>
私はjavascriptが初めてなので、どんな洞察も高く評価されます。