Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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 标签的createJS hittest_Javascript_Jquery_Html_Hittest_Createjs - Fatal编程技术网

Javascript 标签的createJS hittest

Javascript 标签的createJS hittest,javascript,jquery,html,hittest,createjs,Javascript,Jquery,Html,Hittest,Createjs,我正在尝试在createJS标签上注册命中测试 我有两个问题: 1) 正如你可以从下面的图片中看到的,当我悬停在红色的球上时,点击测试只注册,而不是标签。我想这是因为球的大小要大得多。如何获得标签的命中测试 2) CreateJS文档,显示我需要将hitTest事件放在勾号内。我不想把它放在那里,因为我不想让浏览器浪费资源,总是检查hittest。我可以将hittest代码放入类似于jquerydocready的东西中吗 stage = new createjs.Stage("demoCanva

我正在尝试在createJS标签上注册命中测试

我有两个问题:

1) 正如你可以从下面的图片中看到的,当我悬停在红色的球上时,点击测试只注册,而不是标签。我想这是因为球的大小要大得多。如何获得标签的命中测试

2) CreateJS文档,显示我需要将
hitTest
事件放在勾号内。我不想把它放在那里,因为我不想让浏览器浪费资源,总是检查hittest。我可以将
hittest
代码放入类似于
jquerydocready
的东西中吗

stage = new createjs.Stage("demoCanvas");
stage.mouseMoveOutside = true;

circle = stage.addChild(new createjs.Shape());
circle.graphics.beginFill("red").drawCircle(50,50,50);
circle.x = 0;
circle.y = 0;

mylabel = new createjs.Text("testing", "14px Arial", "white");
mylabel.x = 300;
mylabel.y = 100;
stage.addChild(circle, mylabel);                


function tick(event) {  
    if (circle.hitTest(stage.mouseX, stage.mouseY)) { 
        log("ball hit"); 
    }
    if (mylabel.hitTest(stage.mouseX, stage.mouseY)) { 
        log("label hit"); 
    }
    stage.update(event);    
}       

  • 问题似乎是在.hitTest()中使用全局坐标,而它需要本地坐标。使用globalToLocal或localX/Y(在最新的EaselJS版本中)转换鼠标位置

  • 您可以随时运行hitTest。它可以在鼠标移动、单击、定时器上——任何对您的应用程序有意义的操作

  • 1) 我想我不完全理解localToGlobal vs globalToLocal vs localToLocal,2)为什么我不需要转换红球的坐标?3)命中测试是否需要在勾号事件中才能在鼠标上方注册?