javascript - 保存鼠标位置,然后获得更新的第二个值

标签 javascript phaser-framework

我正在使用 Phaser 引擎,我希望在单击并按住事件时从初始鼠标位置绘制一条线,并使其不断更新以在鼠标移动时绘制到鼠标位置。我的问题是,当我尝试存储初始鼠标位置时,它不断变化。这似乎是一个简单的问题,但我不太擅长这些东西。这是代码:

var unitLine;
if(game.input.activePointer.isDown) {
    const firstX = game.input.x;
    const firstY = game.input.y;
    unitLine = game.add.graphics(100, 100);
    unitLine.beginFill(0xFF3300);
    unitLine.lineStyle(10, 0xffd900, 1);

    unitLine.moveTo(firstX, firstY);
    unitLine.lineTo(game.input.x, game.input.y);
}

即使我将它们声明为常量,firstX 和firstY 也会发生变化。不知道在这里做什么。

最佳答案

问题是,每当鼠标 isDown 时,您都会设置 firstXfirstY,因此它们基本上会被覆盖鼠标已按下。

要解决此问题,请尝试使用 Phaser 的 game.input.onDown功能:

var game = new Phaser.Game(500, 500, Phaser.CANVAS, 'test', {
  preload: preload,
  create: create,
  update: update
});

function preload() {}

let firstX;
let firstY;

function create() {
  game.input.onDown.add(function() {
    firstX = game.input.x;
    firstY = game.input.y;
  }, this);
}
var unitLine;

function update() {
  if (game.input.activePointer.isDown) {
    unitLine = game.add.graphics(0, 0);
    unitLine.beginFill(0xFF3300);
    unitLine.lineStyle(10, 0xffd900, 1);

    unitLine.moveTo(firstX, firstY);
    unitLine.lineTo(game.input.x, game.input.y);
  }
}
<script src="https://github.com/photonstorm/phaser-ce/releases/download/v2.11.1/phaser.min.js"></script>

(另外,我必须将 100, 100 更改为 0, 0)

关于javascript - 保存鼠标位置,然后获得更新的第二个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53255871/

相关文章:

javascript - 从 select 获取最接近的输入并将其放入 $.post 中

javascript - JSSOR - 无法读取未定义的类型属性 'currentStyle'

javascript - Sprite vs Group Collider 在启用Body 设置为 true 的移相器中不起作用

jquery - 如何通过四指检测屏幕已更改(mac os)?

javascript - 无法添加 Phaser JS 状态

javascript - 在 Titanium 移动项目中使用 "CryptoJS"库来解密短信 [Triple DES]

javascript - jQuery 砌体 : repositon dom elements regardless of dom order?

javascript - 通过网页动态处理请求

javascript - Phaser/Pixi 法线贴图过滤器不工作

javascript - Phaser.js 中的 Node.js 和 Socket.io 未连接 socket.io/?EIO=3&transport=polling