元がブラウザ仕様なのでスマホ対応にしたいです。できればこの方に近い形式で行きたいですが……。
$(function(){
var canvas = document.getElementById("mycanvas");
if(!canvas || !canvas.getContext)return false;
var ctx = canvas.getContext("2d");
var startX, startY, x, y, borderWidth = 10,
isDrawing = false;
$("#mycanvas").ondown(function(e){
isDrawing = true;
startX = e.pageX - $(this).offset().left - borderWidth;
startY = e.pageY - $(this).offset().top - borderWidth;
})
.onmove(function(e){
if(!isDrawing)return;
x = e.pageX - $(this).offset().left - borderWidth;
y = e.pageY - $(this).offset().top - borderWidth;
ctx.beginPath();
ctx.moveTo(startX,startY);
ctx.lineTo(x,y);
ctx.stroke();
startX = x;
startY = y;
ctx.lineCap = "round";
ctx.lineJoin = "bevel";
})
.onup(function(){
isDrawing = false;
})
.onleave(function(){
isDrawing = false;
});
$("#penColor").change(function(){
ctx.strokeStyle = $(this).val();
});
$("#penWidth").change(function(){
ctx.lineWidth = $(this).val();
});
$("#eraser-on").click(function(){
ctx.globalCompositeOperation = 'destination-out';
});
$("#eraser-off").click(function(){
ctx.globalCompositeOperation = 'source-over';
});
$("#erase").click(function(){
if(!confirm("本当に消去しますか?"))return;
ctx.clearRect(0, 0, canvas.width, canvas.height);
});
if (window.ontouchstart === undefined){
canvas.addEventListener('mousedown', ondown, false);
canvas.addEventListener('mouseup', onup, false);
canvas.addEventListener('mousemove', onmove, false);
canvas.addEventListener('mouseleave',onleave, false);
}else{
canvas.addEventListener('touchstart',ondown, false);
canvas.addEventListener('touchend', onup, false);
canvas.addEventListener('touchmove', onmove, false);
canvas.addEventListener('touchleave',onleave, false);
};
});
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/15 04:57