我一直在研究一堆HTML5視頻和Canvas演示。直到現在我專注於Chrome,但現在我正試圖優化Firefox和Safari。HTML5畫布和Firefox 4 - 獲取點擊座標
我正在處理的一個現在在畫布上繪製視頻並將視頻移動到鼠標點擊位置。到目前爲止,我在Chrome和Safari中都能使用它,但在Firefox中無法使用。我一直無法找到關於這些主題的更多信息(點擊事件,座標,特定於Firefox等)。我從這裏複製的代碼:
How do I get the coordinates of a mouse click on a canvas element? http://answers.oreilly.com/topic/1929-how-to-use-the-canvas-and-draw-elements-in-html5/
,因爲他們給我的印象,應該在所有的瀏覽器,但Firefox依然拒絕。它所做的只是顯示視頻,它不會對鼠標點擊產生反應。
這是我的代碼(不包括定義的變量):
function activateVideo(){
setTarget();
videoElement.play();
animate();
}
function setTarget(){
targetX=xCoord;
targetY=yCoord
moverX=(targetX-currentX)/100;
moverY=(targetY-currentY)/100;
}
canvasElement.addEventListener('click', function(){
/*xCoord = event.clientX - canvasElement.offsetLeft;
yCoord = event.clientY - canvasElement.offsetTop;
txtCount.value = xCoord + " + " + yCoord;*/
if (event.pageX || event.pageY) {
xCoord = event.pageX;
yCoord = event.pageY;
} else {
xCoord = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
yCoord = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}
xCoord -= canvasElement.offsetLeft;
yCoord -= canvasElement.offsetTop;
setTarget();
},false);
function animate(){
currentX += moverX;
currentY += moverY;
if(dist(currentX,targetX,currentY,targetY)<1) {
moverX=0;
moverY=0;
}
drawVideo(videoElement,context,320,256);
timer = setTimeout(animate,20);
}
function dist(x1,x2,y1,y2){
return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
function drawVideo(videoElement,context,w,h) {
context.clearRect(0,0,1000,600);
context.drawImage(videoElement,currentX,currentY,w,h);
}
playCanvas.addEventListener('click', activateVideo, false);
所以很明顯,我有點失落,如果有人能在正確的方向指向我,我將不勝感激。
嗨亞歷克斯,謝謝你的回覆。不幸的是,添加這條線對我來說沒有任何區別 – chuls 2011-04-25 11:54:09
如果使用canvas創建頁面,並且您的addEventListener&pass事件可以提醒(xCoord +「/」+ yCoord),那麼問題必須在別處? – 2011-04-25 12:02:08
我無法弄清楚。我在其他瀏覽器中獲得了所有的值和功能。但Firefox不會有反應 – chuls 2011-04-30 08:54:52