如何使用JavaScript用两个手指旋转整个画布?
我正在使用此功能用一个手指滚动绘图画布:如何使用JavaScript用两个手指旋转整个画布?,javascript,html,canvas,Javascript,Html,Canvas,我正在使用此功能用一个手指滚动绘图画布: var targetStartX、targetStartY、touchtstartx、touchtstarty; 函数onCanvasTouchscroll(事件){ if(event.touchs.length==1){ targetStartX=parseInt(event.target.style.left); targetStartY=parseInt(event.target.style.top); touchStartX=event.Tou
var targetStartX、targetStartY、touchtstartx、touchtstarty;
函数onCanvasTouchscroll(事件){
if(event.touchs.length==1){
targetStartX=parseInt(event.target.style.left);
targetStartY=parseInt(event.target.style.top);
touchStartX=event.Touchs[0].pageX;
touchStartY=event.touchs[0].pageY;
var touchOffsetX=(event.touchs[0].pageX-touchStartX)/10,
touchOffsetY=(event.touchs[0].pageY-touchStartY)/10;//计算触摸
setTimeout(函数(){
var touchOffsetX=(-event.touchs[0].pageX+touchStartX)/10,
touchOffsetY=(-event.touchs[0].pageY+touchStartY)/10;//计算触摸
canvas.style.top=targetStartY+touchOffsetY+'px';
canvas.style.left=targetStartX+touchfoffsetx+'px';
}, 200);
}
}
确实没有这样的命令
首先,您需要修改功能以检测2个手指触摸事件,然后旋转画布
function onCanvasTouchscroll( event )
{
if(event.touches.length == 1)
{
targetStartX = parseInt(event.target.style.left);
targetStartY = parseInt(event.target.style.top);
touchStartX = event.touches[0].pageX;
touchStartY = event.touches[0].pageY;
var touchOffsetX = (event.touches[0].pageX - touchStartX)/10,
touchOffsetY = (event.touches[0].pageY - touchStartY)/10;
setTimeout(function(){
var touchOffsetX = (-event.touches[0].pageX + touchStartX)/10,
touchOffsetY = (-event.touches[0].pageY + touchStartY)/10;
canvas.style.top = targetStartY + touchOffsetY + 'px';
canvas.style.left = targetStartX + touchOffsetX + 'px';
}, 200);
}
else if (event.touches.length > 1) // 2 fingers
{
var rotation = event.rotation;
if (!rotation)
{
rotation = Math.arctan2(event.touches[0].pageY - event.touches[1].pageY,
event.touches[0].pageX - event.touches[1].pageX) * 180 / Math.PI;
}
canvas.style.transform = "rotate(" + rotation + "deg)";
}
}
PS:别忘了为浏览器添加前缀,你应该这样做。确实没有这样的命令 首先,您需要修改功能以检测2个手指触摸事件,然后旋转画布
function onCanvasTouchscroll( event )
{
if(event.touches.length == 1)
{
targetStartX = parseInt(event.target.style.left);
targetStartY = parseInt(event.target.style.top);
touchStartX = event.touches[0].pageX;
touchStartY = event.touches[0].pageY;
var touchOffsetX = (event.touches[0].pageX - touchStartX)/10,
touchOffsetY = (event.touches[0].pageY - touchStartY)/10;
setTimeout(function(){
var touchOffsetX = (-event.touches[0].pageX + touchStartX)/10,
touchOffsetY = (-event.touches[0].pageY + touchStartY)/10;
canvas.style.top = targetStartY + touchOffsetY + 'px';
canvas.style.left = targetStartX + touchOffsetX + 'px';
}, 200);
}
else if (event.touches.length > 1) // 2 fingers
{
var rotation = event.rotation;
if (!rotation)
{
rotation = Math.arctan2(event.touches[0].pageY - event.touches[1].pageY,
event.touches[0].pageX - event.touches[1].pageX) * 180 / Math.PI;
}
canvas.style.transform = "rotate(" + rotation + "deg)";
}
}
PS:别忘了为浏览器添加前缀,你应该这样做。模拟的东西:内容..整个画布模拟的东西:内容..整个画布不工作,但感谢canvas.style.transform当我给它一个固定值时它会旋转画布不工作,但感谢canvas.style.transform它会旋转画布画布,当我给它一个固定的值