Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 缩放画布大小上的easeljs命中检测_Javascript_Html_Canvas_Createjs_Easeljs - Fatal编程技术网

Javascript 缩放画布大小上的easeljs命中检测

Javascript 缩放画布大小上的easeljs命中检测,javascript,html,canvas,createjs,easeljs,Javascript,Html,Canvas,Createjs,Easeljs,我是createJS工具套件的新手,所以请注意我对一些事情的无知。我正在尝试在画布上的各种项目上进行碰撞检测。当画布缩放到865 x 1000px(默认分辨率)时,它可以正常工作,但当切换到响应/缩放布局时,命中检测停止工作 我正在使用Adobe Animate CC和HTML5 Canvas文档类型(这是本项目的一项要求,如果我没有必要,我就不会使用它),当浏览器窗口缩小时,画布也会缩小,从原始的865x1000分辨率更改其宽度和高度属性 我修改了一个我在上面找到的函数,该函数允许它在我的项目

我是createJS工具套件的新手,所以请注意我对一些事情的无知。我正在尝试在画布上的各种项目上进行碰撞检测。当画布缩放到865 x 1000px(默认分辨率)时,它可以正常工作,但当切换到响应/缩放布局时,命中检测停止工作

我正在使用Adobe Animate CC和HTML5 Canvas文档类型(这是本项目的一项要求,如果我没有必要,我就不会使用它),当浏览器窗口缩小时,画布也会缩小,从原始的865x1000分辨率更改其宽度和高度属性

我修改了一个我在上面找到的函数,该函数允许它在我的项目中工作,同时只传递1个对象引用

function intersect(obj1){

var objBounds1 = obj1.getBounds().clone();
var objBounds2;
switch (obj1.name) {
    case "snowBottom":
        objBounds2 = targetBottomRef.getBounds().clone(); 
        break;
    case "snowMiddle":
        objBounds2 = targetMiddleRef.getBounds().clone();
        break;
    case "snowTop":
    case "snowNose":
    case "snowHat":
    case "snowEyes":
        objBounds2 = targetTopRef.getBounds().clone(); 
        break;
}


var pt = obj1.globalToLocal(objBounds2.x, objBounds2.y);
console.log(pt);


var h1 = -(objBounds1.height / 2 + objBounds2.height);
var h2 = objBounds2.width / 2;
var w1 = -(objBounds1.width / 2 + objBounds2.width);
var w2 = objBounds2.width / 2;



if(pt.x > w2 || pt.x < w1) return false;
if(pt.y > h2 || pt.y < h1) return false;

return true;
}

正如您可以看到的OBJ-CORDS(可拖动项),当访问目标位置(x=242 y=754.4)时,pt仍然在其本地坐标中表示其在x=290 y=926,而它应该在x=0,y=0。

您能否提供一个最小电流工作示例,请使用此处的代码功能。理想情况下,我们需要查看代码。我看到copepen链接很好,但这就是你现在使用的代码吗?此外,快速扫描该问题表明,
globalToLocal()
函数在响应更改后不会准确更新其
全局位置坐标。如果你还没有看到,请浏览本页:谢谢你的回复。因为我使用的是Adobe Animate,所以我不能直接给出我自己代码的示例。在大多数情况下,我使用的代码与代码笔中链接的代码相同。我确信的问题是,随着画布的伸缩,全球的呼声不会改变。对于我的项目的图像,绿色框是目标,蓝色/紫色是可拖动的对象。我忘了提到,我的目标和可拖动对象的边界是使用“setBounds()”手动设置的。@pokeybit忘了标记您的上一条评论。我记得Adobe Animate只是将所有内容导出到HTML和JS文件中。我已将代码加载到中,以便您可以在那里查看它。我编写的代码从JS文件的第149行开始。它真的很粗糙,因为我一直在测试我正在工作的项目的功能。你能提供一个最小的当前工作的例子,使用代码功能在这里。理想情况下,我们需要查看代码。我看到copepen链接很好,但这就是你现在使用的代码吗?此外,快速扫描该问题表明,
globalToLocal()
函数在响应更改后不会准确更新其
全局位置坐标。如果你还没有看到,请浏览本页:谢谢你的回复。因为我使用的是Adobe Animate,所以我不能直接给出我自己代码的示例。在大多数情况下,我使用的代码与代码笔中链接的代码相同。我确信的问题是,随着画布的伸缩,全球的呼声不会改变。对于我的项目的图像,绿色框是目标,蓝色/紫色是可拖动的对象。我忘了提到,我的目标和可拖动对象的边界是使用“setBounds()”手动设置的。@pokeybit忘了标记您的上一条评论。我记得Adobe Animate只是将所有内容导出到HTML和JS文件中。我已将代码加载到中,以便您可以在那里查看它。我编写的代码从JS文件的第149行开始。这真的很粗糙,因为我一直在测试我正在进行的项目的功能。
PT: [Point (x=290.56847545219637 y=926.4528021055194)]
TARGET: [Rectangle (x=242 y=754.4 width=94 height=94)]
OBJ-CORDS: x=250.33591731266154 - y=759.7384123647649