javascript - [Javascript] : Sprite is offset

标签 javascript events mouse sprite 2d-games

所以我正在用 JavaScript 编写一些游戏(或者我所说的游戏)。基本上,您应该单击 Canvas 上的某个位置,然后玩家就会被绘制到那里。但是当我单击时, Sprite 会向鼠标上的点偏移一定量(我不确切知道多少)。我怎样才能让 Sprite 准确地绘制在鼠标点上?

图片链接:/image/lmSKz.jpg

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');

canvas.addEventListener('mousemove', mouseMoved, false);
canvas.addEventListener('click', drawPlayerPos, false);

var spriteSheet = new Image();
spriteSheet.src = 'spritesheet.png';
spriteSheet.addEventListener('load', init, false);

var gameWidth = canvas.width;
var gameHeight = canvas.height;

function init()
{
    drawPlayerPos();
}


var mouseX;
var mouseY;

function mouseMoved(e)
{
    mouseX = e.pageX - canvas.offsetLeft;
    mouseY = e.pageY - canvas.offsetTop;
    document.getElementById('mouseCoors').innerHTML = 'X: ' + mouseX + ' Y: ' + mouseY;
}

function drawPlayerPos()
{
    var srcX = 1;
    var srcY = 1;
    var drawX = mouseX;
    var drawY = mouseY;
    var width = 15;
    var height = 15;
    ctx.drawImage(spriteSheet,srcX,srcY,width,height,drawX,drawY,width,height);
}

最佳答案

如果 Sprite 是 15x15,您希望 srcXsrcY 为 0,而不是 1。请注意,您的代码在鼠标点;如果你想让它居中,你需要这样做:

drawX = mouseX - width / 2;
drawY = mouseY - height / 2;

关于javascript - [Javascript] : Sprite is offset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19916304/

相关文章:

javascript - XMLHttpRequest 与 JS Window 对象有何关系

javascript - 无需 DOM 即可访问全局 JS 上下文的属性

c# - 如何在运行时向事件添加更通用的事件处理程序

javascript - knockout : Unable to process binding on observable & issue with initialization

javascript - 模式中多个文本框的更改事件

javascript - 从模糊事件重新聚焦元素时防止第二个元素模糊(仅限 IE8)

javascript - 即使没有人在听,JavaScript 事件是否也总是执行?

c++ - 鼠标、键盘和其他 HID 设备的唯一标识符

Java键盘钩子(Hook)

javascript - 如何禁用 Opera 鼠标手势?