createjs 挣扎于 hitTest()

createjs struggling with hitTest()

我正在 canvas 中填充小圆圈以形成一个形状,并希望使用以下函数破坏用户在屏幕上单击的一些圆圈。

dotsArray : 是所有圆的数组 dot.ball: 是画的圆 炸弹:是使用鼠标点击的用户输入绘制的圆圈,hold.The 炸弹在按下鼠标时按比例放大

function onMouseDown(event){
                bomb.x = event.stageX;
                bomb.y = event.stageY;
                bomb.active = true;
            }

function decimateBalls(){
                for (var i = 0; i < dotsArray.length; i++){
                    for ( var j = 0; j < dotsArray[i].length; j++){
                        var dot = dotsArray[i][j];
                        var pt = dot.ball.localToLocal(dot.ball.x, dot.ball.y,bomb);
                        if(bomb.hitTest(pt.x,pt.y)){
                            dot.setType("empty"); // this changes dot's circle to white making it seem invisible
                        }   
                    }
                }
        }

当我使用上面的代码时,即使我计算了小点相对于正在绘制的炸弹圈的位置,消失的点是那些与正在绘制的炸弹圈有很大偏移的点。

我做错了什么吗?有没有更好的方法来解决这个问题? 非常感谢您的宝贵时间。

我使用以下解决方法来获得所需的结果。

  1. 确保所有内容都已添加到舞台上。摆脱了容器。
  2. 使用 if(bomb.hitTest(dot.ball.x - bomb.x,dot.ball.y - bomb.y)) 并摆脱了 createjs 提供的 localToLocal() 函数来查找一个对象相对于另一个对象的局部坐标。

希望这对遇到类似问题的人有所帮助。