網路常都會看到網頁版小畫家之類的東西,可以用滑鼠來繪圖
所以就試試在行動裝置上用觸控的方式實作繪圖
HTML:
<body> <canvas id="sign" width="1000" height="1000"> Your browser does not have support for Canvas. </canvas> <input type="button" value="清空" id="clear" /> </body>
Javascript:
$(document).ready(function(){
//起始點位置
var pp = [-1,-1];
//下一個點的位置
var np = [0,0];
//button物件
var bu = document.getElementById('clear');
//canvas物件
var canvas = document.getElementById('sign');
//2維繪圖
var ctx = canvas.getContext("2d");
//線條寬度
ctx.lineWidth = 25;
//線條顏色
ctx.strokeStyle = "red";
//關閉原本瀏覽器的兩指縮放、拖拉捲動操作的干擾
document.body.addEventListener('touchmove', function (e) {
e.preventDefault();
}, false);
//使用addEventListener的好處是,當我有相同的觸發事件時,就不會被蓋掉
//touchstart
canvas.addEventListener('touchstart', function(e) {
//每次觸發一次touch就換一次顏色
ctx.strokeStyle = ctx.strokeStyle == "red" ? ("green") : ("red");
}, false);
//touchmove
canvas.addEventListener('touchmove', function(e) {
var touches = e.touches;
//如果是剛下筆(手),會先初始化起始點
if( pp[0] == -1 && pp[1] == -1 ){
pp = [touches[0].pageX,touches[0].pageY];
}
//紀錄下一點的位置
np = [touches[0].pageX,touches[0].pageY];
//繪圖
ctx.beginPath();
ctx.moveTo(pp[0], pp[1]);
ctx.lineTo(np[0],np[1]);
ctx.closePath();
ctx.stroke();
//下一點的位置=新的起始點
pp[0] = np[0];
pp[1] = np[1];
}, false);
//touchend
canvas.addEventListener('touchend', function(e) {
//起始點歸零
pp = [-1,-1];
}, false);
//清除canvas畫面
bu.onclick = function(){ clearCanvas(); };
function clearCanvas() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
});