えっとね、まず、ここの時計をみてほしいの。
シンプルだけど、いいアナログ時計よね。しかもこれ、画像を使わずに全部描画みたいなのよね。
それで、表示してみたのだけど。
という、わがままな要求が。
うーん、JavaScriptのCanvasの書き方なんか知らないよ。PIを使った針の書き方も忘れて久しいよ。
ま、まぁいいわ。せっかくコードを見せてくださっているんだもの、 改造 してみましょう。
まず、文字盤のコードは以下ね。
// 文字盤 ctx.save(); ctx.font = "30px 'sans-serif'"; ctx.textAlign ="center"; ctx.textBaseline ="middle"; ctx.fillStyle = "rgb(0, 0, 0)"; ctx.shadowBlur = 5; ctx.shadowColor = "#FFF"; for (var i = 0; i < 12; i++) { var radian = i * Math.PI / 6; var x = center.x + rads * Math.sin(radian); var y = center.y - rads * Math.cos(radian); var text = "" + (i == 0 ? "12" : i); ctx.fillText(text, x, y); } ctx.restore();
これを逆にするには?
どうやら普通に数字を描いてるだけみたいだから、これは単に差し替えるだけ。
0(12)~11 を描いているところで、逆に 11~0(12)を書けばいいのね。
var text = "" + (i == 0 ? "12" : i);
var text = "" + ((12 - i) == 0 ? "12" : (12 - i));
これでいいわ。
次に逆回転だけど。
これは秒針からやっていくのがわかりやすいの。
元サイトの方はわかりやすくコメントをつけてくださっているから、秒針がわかれば他の針もすぐわかると思う。変数も hr , min , sec って、とてもわかりやすいものになってるしね。
// 秒針 ctx.save(); ctx.rotate((59 - sec) * Math.PI/30); ctx.strokeStyle = "rgb(207, 170, 77)"; ctx.lineWidth = 2; ctx.beginPath(); ctx.moveTo(0,30); ctx.lineTo(0,-100); ctx.stroke(); ctx.restore();
どこを変えたかわかる?ここよ。
ここを
ctx.rotate(sec * Math.PI/30);
以下のようにしたのね。
ctx.rotate((59 - sec) * Math.PI/30);
あと、秒針を赤にするには、これ。
ctx.strokeStyle = "rgb(207, 17, 7)";
原色赤にせずに微妙に混ぜてるけど、これは趣味の問題ね。
できたかしら?
#ref(): File not found: "clock1.jpg" at page "JSClock1"