似乎沒有一種很好的方式將<canvas>
視口基於鼠標指針的位置並可以自由移動。基本上,就像市場上的其他第一人稱遊戲一樣。畫布:基於指針的視口/包含鼠標指針
- 沒有辦法在
<canvas>
元素內捕獲鼠標 。 - 沒有辦法設置鼠標指針的位置 。
- 無法全屏 與
<canvas>
,即使一旦達到邊緣,功能將被打破。
也有很好的理由。想象一下,有什麼可能的情況可以(肯定會)被惡意人員利用。
也許現在想想幾乎只能在3D環境中使用的東西還爲時過早,這是目前還沒有規範的東西。
您的需求或解決方案是什麼?
似乎沒有一種很好的方式將<canvas>
視口基於鼠標指針的位置並可以自由移動。基本上,就像市場上的其他第一人稱遊戲一樣。畫布:基於指針的視口/包含鼠標指針
<canvas>
元素內捕獲鼠標 。<canvas>
,即使一旦達到邊緣,功能將被打破。也有很好的理由。想象一下,有什麼可能的情況可以(肯定會)被惡意人員利用。
也許現在想想幾乎只能在3D環境中使用的東西還爲時過早,這是目前還沒有規範的東西。
您的需求或解決方案是什麼?
我不認爲有這個一個很好的解決方案 - 至少,直到我們得到鼠標鎖定。無論你的解決方案多麼優雅,如果你製作了一個棘手的鼠標驅動的遊戲,用戶將在某個時刻在畫布區域之外抽搐。即使他們不小心點擊鏈接,當視圖停止響應鼠標時,他們的沉浸感也會被破壞。
對於慢節奏的遊戲,你可以:
值得注意的是Firefox中有一個open feature request用於鼠標鎖定。但是,不幸的是,這不是,也不是鼠標隱藏或全屏是WebGL規範的一部分。
Unity支持所有這些功能,因此如果您確實需要FPS控件,則可能是一種查看路徑。
你可以得到canvas
裏面的鼠標位置。
function getCursorPosition(e) {
var x;
var y;
if (e.pageX != undefined && e.pageY != undefined) {
x = e.pageX;
y = e.pageY;
}
else {
x = e.clientX + document.body.scrollLeft +
document.documentElement.scrollLeft;
y = e.clientY + document.body.scrollTop +
document.documentElement.scrollTop;
}
x -= gCanvasElement.offsetLeft;
y -= gCanvasElement.offsetTop;
var cell = new Cell(Math.floor(y/kPieceHeight),
Math.floor(x/kPieceWidth));
return cell;
}
是的,很明顯。但這不是我要找的。我正在探索不斷地並無限地向任一方向滾動視口的可能性。但是,一旦將鼠標移動到畫布之外,就會失去此能力。 – 2011-03-13 14:24:34
@abloodywar難道你不會移動你在畫布上繪製的內容,而不是滾動瀏覽器視口? – alex 2011-03-13 14:29:46