gpt4 book ai didi

javascript - HTML5 - Canvas 元素和自定义光标

转载 作者:行者123 更新时间:2023-12-02 16:18:47 25 4
gpt4 key购买 nike

HTML5 文档 - Canvas 元素未运行自定义“矩形”光标的 JavaScript 参数。请帮忙:)

    <head>
<title>Canvas Element & Custom Cursor</title>
</head>
<body id="body" style="background-color:red;">

<canvas id="canvas" width="600" height="400" style="background-
color:white;"> </canvas>

<script>
funtion CanvasProperties(){
var canvas = document.getElementById("canvas");
canvas = canvas.getContext("2d");
window.addEventListener("mousemove", CustomCursor, false);}

function CustomCursor(){
canvas.clearRect(0,0,600,400);
var xPosition = clientX;
var yPosition = clientY;
canvas.fillRect(xPosition, yPosition, 100, 100);}

window.addEventListener("load", CanvasProperties, false);
</script>

</body> </html>

最佳答案

这里有几个问题,其中一些已经在 Scimonster 的回答中指出,但仍然存在一个重要的问题。

为了正确放置矩形,您需要“更正”鼠标位置。鼠标位置是相对于客户端窗口的,而您需要它们相对于 Canvas 元素的。

此外,您正在使用上下文覆盖 Canvas 。为其使用单独的变量,并将它们放置在全局(父)范围内。

这是完整版本(在脚本标签内):

var canvas, context;                                   // place this in global scope

function CanvasProperties(){
canvas = document.getElementById("canvas");
context = canvas.getContext("2d"); // separate var for context...
window.addEventListener("mousemove", CustomCursor, false);
}

function CustomCursor(e){
var canvasRect = canvas.getBoundingClientRect(); // get position of canvas element
var xPosition = e.clientX - canvasRect.left; // adjust mouse positions to
var yPosition = e.clientY - canvasRect.top; // become relative to canvas

context.clearRect(0,0,600,400); // use context
context.fillRect(xPosition - 50, yPosition - 50, 100, 100);
}

window.addEventListener("load", CanvasProperties, false);
<canvas id="canvas" width=600 height=400></canvas>

关于javascript - HTML5 - Canvas 元素和自定义光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29321951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com