我正在尝试实现一个有移动物体(Bitmaps)的游戏,我需要检测碰撞。我使用以下代码使对象移动(转换)并用鼠标悬停检查hitTest
。
但是,使用正确的鼠标位置不会更改alpha,而是会检测画布的左上角。
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);
}
答案 0 :(得分:0)
我在阅读this question的答案时找到了答案。
而不是直接获取stage.mouseX
或stage.mouseY
,可以使用globalToLocal
上的 var p = rock.globalToLocal(stage.mouseX, stage.mouseY);
if (rock.hitTest(p.x, p.y)) {
rock.alpha = 1;
}
获取正确的位置。
setlocal