javascript - EaselJS 对移动位图的 hitTest

标签 javascript createjs easeljs

我正在尝试实现一个有移动对象(位图)的游戏,并且我需要检测碰撞。我使用以下代码使对象移动(变换)并用鼠标悬停检查 hitTest

但是,Alpha 不会随着正确的鼠标位置而改变,而是检测 Canvas 的左上角。

enter image description here

rock = new createjs.Bitmap(loader.getResult("rock"));
rock.setTransform(800, 270, 0.5, 0.5);
stage.addChild(rock);
// ..... 

createjs.Ticker.timingMode = createjs.Ticker.RAF;
createjs.Ticker.addEventListener("tick", tick);
// .....

function tick(event) {
    rock.alpha = 0.7;
    if (rock.hitTest(stage.mouseX, stage.mouseY)) {//if hit, change alpha
        rock.alpha = 1;
    }
    var deltaS = event.delta / 1000;
    rock.x = (rock.x - deltaS * groundSpeed);//to gradually shift the rock
    if (rock.x + rock.image.width * rock.scaleX <= 0) {//to re-position the rock
        rock.x = w + Math.random() * 1000;
    }
    stage.update(event);
}

最佳答案

我在阅读this question的答案时找到了答案.

与直接获取 stage.mouseXstage.mouseY 不同,可以使用 globalToLocal 获取正确的位置,如this .

  var p = rock.globalToLocal(stage.mouseX, stage.mouseY);
  if (rock.hitTest(p.x, p.y)) {
      rock.alpha = 1;
  }

关于javascript - EaselJS 对移动位图的 hitTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41456811/

相关文章:

javascript - 在 JSX 中使用 React.cloneElement()

javascript - TinyMCE 将 > 转换为 >

javascript - 如何停止运行定时器功能?

javascript - 使用 CreateJS 创建简单的补间文本

javascript - 简单的 xslt 错误 :

javascript - 无法使用 PreloadJS 和 Vue.js 多次加载资源

javascript - CreateJS 使用 Tween.js 增加阴影 offsetX

javascript - CreateJS 不会加载

javascript - 我收到错误 "createjs is not defined",即使我链接到该文件

animation - 画架JS : Animation not respecting stop flag