我有一個棘手的問題,可能只是一個簡單的解決方案,雖然我現在真的沒有看到它。棘手的屏幕尺寸和縮放比例(使用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瀏覽器,以查看是否有幫助:) –