私は、HTML5 のビデオとキャンバスのデモを多数作成してきました。今までは Chrome に集中していましたが、現在は Firefox と Safari にも最適化しようとしています。
私が現在取り組んでいるものは、キャンバスにビデオを描画し、ビデオをマウスクリックの位置に移動します。これまでのところ、Chrome と Safari では機能しますが、Firefox では機能しません。これらのトピック (クリック イベント、座標、Firefox 固有など) に関する多くの情報を見つけることができませんでした。ここからコードをコピーしました:
キャンバス要素でのマウスクリックの座標を取得するにはどうすればよいですか? 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);
誰かが私を正しい方向に向けることができれば、私はそれを感謝します。