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

标签 javascript html canvas

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/

相关文章:

javascript - WebdriverJS 设置视口(viewport)大小

javascript - axios删除调用返回405,我尝试使用id删除节点,但它没有删除

javascript - 将 javaScript 数组添加到 HTML 页面?

html - 为什么悬停样式在应用于我的 div 时不起作用?

javascript - HTML5/JS Canvas 显示图片

javascript - 在 for 循环中将变量传递给 onload 函数

javascript - KonvaJS - 始终在 Canvas 中心缩放

javascript - 大于比较可以返回除 true 或 false 以外的任何内容吗?

Javascript:字典数组,从一个有条件的字典中获取所有键值对

javascript - 在 HTML 中检测没有事件属性的 Google Gadget 中的 onmouseout