Adobe Animate CC和JavaScript-冲突检测

Adobe Animate CC和JavaScript-冲突检测,javascript,adobe,collision-detection,easeljs,animate-cc,Javascript,Adobe,Collision Detection,Easeljs,Animate Cc,我正在使用Adobe Animate CC和JavaScript编码。我尝试使用以下代码检测两个符号之间的冲突: createjs.Ticker.on("tick", gameLoop, state); function gameLoop(){ var pt = player.globalToLocal(collect.x, collect.y); if(player.hitTest(pt.x, pt.y)){ alert("hit");

我正在使用Adobe Animate CC和JavaScript编码。我尝试使用以下代码检测两个符号之间的冲突:

createjs.Ticker.on("tick", gameLoop, state);

function gameLoop(){

var pt = player.globalToLocal(collect.x, collect.y);
    if(player.hitTest(pt.x, pt.y)){
        alert("hit");           
    }
}
但这没什么用,这句话总是假的

如何解决此问题?

您可以使用“收进边界(\u x,\u y,\u wifth,\u height)”

然后检查:

bounds = player.getTransformedBounds();

if (bounds.intersects(enemy.getTransformedBounds())) 
{
    // something code
}
西班牙语参考资料:

您可以使用“收边(\u x,\u y,\u wifth,\u height)”

然后检查:

bounds = player.getTransformedBounds();

if (bounds.intersects(enemy.getTransformedBounds())) 
{
    // something code
}

西班牙语参考资料:

以下是Adobe Animate CC的示例代码,其中包含6个可拖动项目和2个拖放区域。当画布设置为“响应”时,此选项也起作用。在拖放和碰撞检测/命中测试之间,应该很容易将其分解为所需的内容

this.block1.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});

this.block2.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});

this.block3.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});

this.block4.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});

this.block5.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});

this.block6.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});





this.on("tick", update.bind(this));

function update() {

var b1 = this.block1.localToLocal(100, 0, this.frontAnswerDrop);

var b2 = this.block2.localToLocal(100, 0, this.frontAnswerDrop);

var b3 = this.block3.localToLocal(100, 0, this.frontAnswerDrop);

var b4 = this.block4.localToLocal(100, 0, this.backAnswerDrop);

var b5 = this.block5.localToLocal(100, 0, this.backAnswerDrop);

var b6 = this.block6.localToLocal(100, 0, this.backAnswerDrop);





if (this.frontAnswerDrop.hitTest(b1.x, b1.y)) {

console.log("b1 collided");

}

if (this.frontAnswerDrop.hitTest(b2.x, b2.y)) {

console.log("b2 collided");

}

if (this.frontAnswerDrop.hitTest(b3.x, b3.y)) {

console.log("b3 collided");

}

if (this.backAnswerDrop.hitTest(b4.x, b4.y)) {

console.log("b4 collided");

}

if (this.backAnswerDrop.hitTest(b5.x, b5.y)) {

console.log("b5 collided");

}

if (this.backAnswerDrop.hitTest(b6.x, b6.y)) {

console.log("b6 collided");

}

}

下面是Adobe Animate CC的示例代码,其中包含6个可拖动项目和2个拖放区域。当画布设置为“响应”时,此选项也起作用。在拖放和碰撞检测/命中测试之间,应该很容易将其分解为所需的内容

this.block1.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});

this.block2.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});

this.block3.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});

this.block4.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});

this.block5.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});

this.block6.on("pressmove", function (evt) {

var p = stage.globalToLocal(evt.stageX, evt.stageY);

evt.currentTarget.x = p.x;

evt.currentTarget.y = p.y;

});





this.on("tick", update.bind(this));

function update() {

var b1 = this.block1.localToLocal(100, 0, this.frontAnswerDrop);

var b2 = this.block2.localToLocal(100, 0, this.frontAnswerDrop);

var b3 = this.block3.localToLocal(100, 0, this.frontAnswerDrop);

var b4 = this.block4.localToLocal(100, 0, this.backAnswerDrop);

var b5 = this.block5.localToLocal(100, 0, this.backAnswerDrop);

var b6 = this.block6.localToLocal(100, 0, this.backAnswerDrop);





if (this.frontAnswerDrop.hitTest(b1.x, b1.y)) {

console.log("b1 collided");

}

if (this.frontAnswerDrop.hitTest(b2.x, b2.y)) {

console.log("b2 collided");

}

if (this.frontAnswerDrop.hitTest(b3.x, b3.y)) {

console.log("b3 collided");

}

if (this.backAnswerDrop.hitTest(b4.x, b4.y)) {

console.log("b4 collided");

}

if (this.backAnswerDrop.hitTest(b5.x, b5.y)) {

console.log("b5 collided");

}

if (this.backAnswerDrop.hitTest(b6.x, b6.y)) {

console.log("b6 collided");

}

}

尽量使物体变小。 代码应该是有效的。这对我有用。我有一个自行车播放器。程序显示自行车前轮撞到猫时发生碰撞


当我的自行车后轮撞到猫时,它不会显示碰撞警报。

尽量缩小物体。 代码应该是有效的。这对我有用。我有一个自行车播放器。程序显示自行车前轮撞到猫时发生碰撞


当我的自行车后轮与猫碰撞时,它不会显示碰撞警报。

您可以使用SetInterval()函数代替createJs.ticker,并保持代码不变。我认为您在createJs中犯了错误,而不是createJs.ticker,您可以使用SetInterval()函数并保持代码不变。我认为您在createJs中犯了错误,您可能误解了hitTest的工作原理。看看这篇最近的帖子:你可能误解了hitTest的工作原理。查看这篇最新文章:动画符号已经有了一个
nominalBounds
(尽管getBounds没有使用它)——所以你可以使用那些坐标。动画符号已经有了一个
nominalBounds
(尽管getBounds没有使用它)--所以你可以使用这些坐标。分享一个例子或一些你编写或使用过的对你有用的代码,这会对OP更有帮助。分享一个你编写或使用过的对你有用的例子或代码,这将有助于操作。createjs.Ticker基本上是一个健壮的setIntervalcreatejs.Ticker基本上是一个健壮的setInterval