EventTarget.addEventListener('click', listener)
のように簡単に処理を追加できるわけではない。そこで当記事では、「Canvas上にある四角と丸のオブジェクトをクリックしたら色がかわる」というサンプルを元に、オブジェクトのクリック判定やクリックされたときに処理を実行する方法について解説する。
EventTarget.addEventListener('click', listener)
のように簡単に処理を追加できるわけではない。<video id="camera"></video>
async function main() {
const video = document.querySelector("video#camera");
// MediaStreamを取得する(Promiseが返る)
const stream = await navigator.mediaDevices.getUserMedia({ video: true });
video.srcObject = stream;
// MediaStreamが取得できたら再生する
video.onloadedmetadata = () => video.play();
}
main();
今回は映像だけを使いたいので、mediaDevices.getUserMedia
に{video: true}
を指定したが、音声も使いたい場合は{video: true, audio: true}
のように指定する。requestAnimationFrame
とsetInterval
setTimeout
には明確な違いがある。requestAnimationFrame
はブラウザの状態により実行間隔を自動で調整してくれるのに対し、setInterval
setTimeout
は時間どおりに実行するため、処理がすべて終わる前に次の処理が実行されてしまう。keydown
、keypress
、keyup
など)を取得し、オブジェクトの座標を変更することで、移動させることができる。background-position
で表示位置を調整して疑似トリミングを実現することもできるが、今回はHTML5のCanvasを使ってトリミングする方法をまとめる。