我有一个棘手的问题,可能只是一个简单的解决方案,虽然我现在真的没有看到它。棘手的屏幕尺寸和缩放比例(使用Javascript)
所以,我一直在围绕着HTML5元素,显然是在JavaScript中进行交互方法。
这项工作的目标之一是能够使用移动设备[MD](iOS或Android,手机或平板电脑)作为将由另一台机器提供服务的应用程序(例如a笔记本电脑或外接显示器),两者将在不同尺度的每个屏幕上显示相同的内容。因此,当画布填满80%(或者在这种情况下,“擦除”(我已经通过计算[初始]像素的总数)并且每个设备具有不同的颜色时,我想要发生事件算上因为屏幕尺寸/分辨率不同
这是棘手的部分。我将如何能够“规模”的MD像素数和镜像该到更大的屏幕
采取具体措施,怎么样?我将能够实现以下示例:
我在MD上画了一条线,宽度为300px,为了简单起见,假设这代表MD画布的10%(两个屏幕都是全屏显示)。 我希望外部显示器(具有更高分辨率)能够反映此事件,但尺寸适当,以便MD上的这些10%代表“缩放比例”的10%“画布不动产”
Just in案文是太混乱了,我会留下波纹管代码:
function totalPix(x, y) {
var total = x * y;
var objective = (total * 80)/100;
}
function canvasApp() {
//prevent from scrolling (no bouncing)
document.body.addEventListener('touchmove', function(event){
event.preventDefault();
}, false);
if(!canvasSupport()) {
alert("No canvas support on this device!");
return;
} else if(!socketSupport) {
alert("No websocket support on this device!");
} else {
//create canvas on every load (//TODO)
var elemDiv = document.getElementById("content");
var newElem = document.createElement("canvas");
newElem.setAttribute("id", "frontscreen");
elemDiv.appendChild(newElem);
drawScreen();
function drawScreen() {
//Setup canvas
var canvas = document.getElementById("frontscreen");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
totalPix(canvas.width, canvas.height);
ctx = canvas.getContext("2d");
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.beginPath();
//Foreach touchmove event, send position to server
canvas.addEventListener('touchmove', function(event) {
for (var i = 0; i<event.touches.length; i++) {
var touch = event.touches[i];
ctx.globalCompositeOperation = "destination-out";
ctx.fillStyle = "white";
ctx.beginPath();
ctx.arc(touch.pageX, touch.pageY, 30, 0, 2*Math.PI, false);
ctx.fill();
ctx.stroke();
}
}, false);
window.onresize = function resizeCanvas() {drawScreen();};
}
}
}
我不需要画布来缩放,因为它已经做了任何屏幕尺寸。我想要的是在screenA上绘制的每个“对象”都被缩放并转换为screenB。请参阅[链接]上的示例(https://dl.dropbox.com/u/3543277/raspadinha/index.html),并将其用于移动设备和PC浏览器,以查看是否有帮助:) –