下記のソースは、canvasのパーティクルを動かすソースです。
処理をdrawにぶちこんだもの
javascript
1//①canvas要素の取得 2var canvas = document.getElementById("canvas"); 3 4//②canvas要素から描画コンテキストの取得 5var ctx = canvas.getContext("2d"); 6 7window.requestAnimationFrame = 8 window.requestAnimationFrame || 9 window.mozRequestAnimationFrame || 10 window.webkitRequestAnimationFrame || 11 window.msRequestAnimationFrame || 12 function(cb) {setTimeout(cb,17);}; 13 14var x =5; 15var y =5; 16 17//1.図形を描画する。(描画サイクルの開始) 18draw(); 19 20function draw() { 21 //2.一度図形を消去する 22 ctx.clearRect(0,0,500,500); 23 24 //3.位置をずらす 25 x +=5; 26 y +=5; 27 28 //.4再度図形を描画する。 29 30 //パスを初期化。ここでいうパスとは、領域の境界線のようなものだという。 31 ctx.beginPath(); 32 33 //塗りつぶす色を指定。 34 ctx.fillStyle = "#99ff66";//緑色 35 36 //長方形のパスを作成。第一引数がx座標(横)、第二引数がy座標(縦)、第三引数が横幅、第四引数が高さだ。座標というのは、ブラウザの表示領域のX軸とY軸のことだ。0,0にすれば、ブラウザの左上に表示される。 37 ctx.rect(this.x,this.y,10,20);//rectは、rectangel(長方形、矩形)の略である。 38 39 //fillで長方形を塗りつぶす。何も指定しないと黒色となる。 40 ctx.fill();//fillは、容器や場所などをいっぱいにする、満たすという意味だ。 41 42 //最後にbeginPathで開始したパスを閉じる。 43 ctx.closePath(); 44 45 //5.一定時間を置く 46 requestAnimationFrame(render); 47} 48
処理をいくつかの関数に分けたもの
javascript
1//①canvas要素の取得 2var canvas = document.getElementById("canvas"); 3 4//②canvas要素から描画コンテキストの取得 5var ctx = canvas.getContext("2d"); 6 7window.requestAnimationFrame = 8 window.requestAnimationFrame || 9 window.mozRequestAnimationFrame || 10 window.webkitRequestAnimationFrame || 11 window.msRequestAnimationFrame || 12 function(cb) {setTimeout(cb,17);}; 13 14var x =5; 15var y =5; 16 17//1.図形を描画する。(描画サイクルの開始) 18render(); 19 20function render() { 21 //2.一度図形を消去する 22 ctx.clearRect(0,0,500,500); 23 24 updatePosition(); 25 draw(x.y); 26 27 //5.一定時間を置く 28 requestAnimationFrame(render); 29} 30function updatePosition() { 31 //3.位置をずらす 32 x +=5; 33 y +=5; 34} 35function draw(posx,posy) { 36 //.4再度図形を描画する。 37 38 //パスを初期化。ここでいうパスとは、領域の境界線のようなものだという。 39 ctx.beginPath(); 40 41 //塗りつぶす色を指定。 42 ctx.fillStyle = "#99ff66";//緑色 43 44 //長方形のパスを作成。第一引数がx座標(横)、第二引数がy座標(縦)、第三引数が横幅、第四引数が高さだ。座標というのは、ブラウザの表示領域のX軸とY軸のことだ。0,0にすれば、ブラウザの左上に表示される。 45 ctx.rect(this.x,this.y,10,20);//rectは、rectangel(長方形、矩形)の略である。 46 47 //fillで長方形を塗りつぶす。何も指定しないと黒色となる。 48 ctx.fill();//fillは、容器や場所などをいっぱいにする、満たすという意味だ。 49 50 //最後にbeginPathで開始したパスを閉じる。 51 ctx.closePath(); 52}
drawにぶちこんだ処理をわけるさい、描画する位置をずらす処理をupdatePositionに、描画する処理をdraw、それらをまとめたもの?をrenderに分けましたが、なぜこのような分け方になったのでしょうか。
またこのようにわけるとブレイクスルーjavascriptの72頁によれば再利用性(使いまわしやすさ?)が向上するそうですが、なぜ分けると向上するのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。