0
私のスクリプトで助けが必要です。私はcanvas
の上でマウスと一緒に "明るい場所"を動かそうとしていますが、それはcoursorよりも速く動いているようです。問題はどこだ?キャンバス放射状勾配アニメーション
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
position:absolute;
margin: 0px;
padding: 0px;
}
canvas{
position: fixed;
height:900px;
Width:900px;
}
</style>
</head>
<body>
<canvas id="myCanvas"></canvas>
<script>
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
window.onmousemove=function(){
context.clearRect(0, 0, canvas.width, canvas.height);
context.rect(0, 0, canvas.width, canvas.height);
// create radial gradient
var grd = context.createRadialGradient(event.clientX, event.clientY, 5, event.clientX+20, event.clientY+20, 100);
// light blue
grd.addColorStop(0, '#ffffff');
// dark blue
grd.addColorStop(0.5, '#000000');
context.fillStyle = grd;
context.fill();
};
window.onclick= function(){
alert("X: " + event.clientX + " " +"Y: " + event.clientY)
}
</script>
</body>
</html>
あなたは、自身の幅と高さのプロパティを設定せずにCSSを使ってキャンバスのサイズを変更しています。コンテキストは、表示された(CSS)プロパティのサイズではなく、このプロパティのサイズのみを認識します。また、マウスの移動ごとにグラデーションを作成するのは、一般的には悪い考えです。代わりに、オフスクリーンキャンバスにグラデーションを1回描画してから、このオフスクリーンキャンバスを正しい位置に描画します。 – Kaiido
これでOKです。ありがとうございました – Pawel