質問するログイン新規登録

回答編集履歴

1

もうちょっと丁寧に

2017/12/21 16:14

投稿

turbgraphics200
turbgraphics200

スコア4269

answer CHANGED
@@ -35,4 +35,37 @@
35
35
  }
36
36
  ```
37
37
  render関数内で実行しているrequestAnimationFrameのidでreqId変数の内容を更新させます。
38
- これで、buttonクリックで停止させることができます。
38
+ これで、buttonクリックで停止させることができます。
39
+
40
+ で、ボタンクリックで、別の描画処理を行わせたい場合は、
41
+ ```js
42
+ var reqId = null;
43
+
44
+ monochromeButton.onclick = function() {
45
+ cancelRender();
46
+ monochromeRender();
47
+ };
48
+
49
+ sepiaButton.onclick = function() {
50
+ cancelRender();
51
+ sepiaRender();
52
+ };
53
+
54
+ function cancelRender() {
55
+ if(reqId) {
56
+ cancelAnimationFrame(reqId);
57
+ }
58
+ }
59
+
60
+ function monochromeRender() {
61
+ reqId = requestAnimationFrame(render);
62
+ // ...
63
+ }
64
+
65
+ function sepiaRender() {
66
+ reqId = requestAnimationFrame(render);
67
+ // ...
68
+ }
69
+ ```
70
+
71
+ といった感じに組みます。