プログラミングで飯を食え。腕をあげたきゃ備忘録!

PHP、JavaScript、HTML5、CSS3などWEB系言語を中心に基本テク、備忘録をまとめます。Android、Iphoneアプリ開発についても!

HTML5のcanvasを使ってAndroidアプリ!描画練習⑤

サクウェブTVはコチラ↓↓↓
サクウェブTV

さて、もう少し細工してみます。

前回はfor文を使用して線を一気に描画しましたが、これを一定時間ごとに1本ずつ描画することで少し、アニメーションのように見えるかもしれません。

やってみましょう。

利用するのはsetInterval()です。

今回は1000分の50秒ごとに線を描画してみます。

では、まずsetInterval()に指定するfunctionを定義しましょう。

function drawLine(){
	if(para<100){
		c.beginPath();
		c.moveTo(10,10);
		c.lineTo(10+para*5,290);
		c.stroke();
		para++;
}else{
clearInterval(timer);
}
}

HTML5のcanvasを使ってAndroidアプリ!描画練習②で指定した変数paraはここで使用します。

setInterval()は例えば、

var timer = setInterval(drawLine,50);

のように指定することでsetInterval()が返すタイマーIDを取得できます。

タイマーIDはclearInterval()に引数として渡すことでsetInterval()の繰り返しを止めることができます。

clearInterval(timer); 

つまり、こうして止めない限りsetInterval()の繰り返しは続いてしまうため、ちょうど100本の直線描画が完了したら繰り返しを止めるためにif文で分岐しています。

paraは100回の処理をカウントするパラメータです。

以下今のところの全文です。

window.onload = function(){
	var para = 0;
	var para2 = 0;
	var canvas = $("draw_space");
	var c = canvas.getContext("2d");
	c.strokeStyle = "#ff0000";
	c.globalAlpha = 0.7;
	var timer = setInterval(drawLine,50);
	
	function drawLine(){
		if(para<100){
			c.beginPath();
			c.moveTo(10,10);
			c.lineTo(10+para*5,290);
			c.stroke();
			para++;
		}else{
			clearInterval(timer);
		}
	}
}

実行してみましょう。Youtubeで動画を張り付けましたのでご覧ください。

うん、少し動きがでましたね。

でも、もうちょっといじります。

次回は10本ずつで色を変えるなどしてカラフルにでもしてみましょうか。

>>HTML5のcanvasを使ってAndroidアプリ!描画練習⑥<<