EaselJS在移动位图时命中测试

时间:2017-01-04 05:30:21

标签: javascript createjs easeljs

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

但是,使用正确的鼠标位置不会更改alpha,而是会检测画布的左上角。

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);
}

1 个答案:

答案 0 :(得分:0)

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

而不是直接获取stage.mouseXstage.mouseY,可以使用globalToLocal上的 var p = rock.globalToLocal(stage.mouseX, stage.mouseY); if (rock.hitTest(p.x, p.y)) { rock.alpha = 1; } 获取正确的位置。

setlocal