CreateJS Flash CC HitTest无法正常工作

时间:2015-02-20 02:29:56

标签: createjs hittest

抱歉我的英文不好,

Hello guys ^ _ ^,我是新手尝试使用createjs和Flash CC。

我在Flash CC(html5 Canvas)中使用简单的hitTest函数创建应用程序,但看起来似乎无法正常工作。画布上有两个对象(一个movieclip类型对象)(我将它放在名为&#34的数组上; arrTmbl"),当我尝试鼠标悬停在它上面时,控制台日志总是显示" Not Hit& #34;,这是我的代码:

var arrTmbl = ['tmbl0', 'tmbl1'];

var update = true;
stage.enableMouseOver(10);
stage.addEventListener("tick", f_tick);

function f_tick() {
if (update) {
    update = false;
    stage.update();
}
}

for (var i in arrTmbl) {
this[arrTmbl[i]].addEventListener("mouseover", function (e) {
    var pt = e.currentTarget.globalToLocal(stage.mouseX, stage.mouseY);
    if (e.currentTarget.hitTest(pt.x, pt.y)) {
        console.log("Hit");

    } else {
        console.log("Not Hit");
    }
});

this[arrTmbl[i]].addEventListener("pressmove", function (evt) {
    evt.currentTarget.x = evt.stageX;
    evt.currentTarget.y = evt.stageY;
    update = true;
});

this[arrTmbl[i]].addEventListener("pressup", function (jvt) {
    jvt.currentTarget.gotoAndPlay("hit");
});
}

感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

在这种情况下没有理由做hitTestmouseover监听器完全是多余的。您可以将逻辑简化为:

for (var i in arrTmbl) {
    this[arrTmbl[i]].addEventListener("mouseover", function (e) {
        console.log("Hit");
    });
}

mouseover事件仅在currentTarget的匹配测试已返回true时触发。