2015-01-29 3 views
0

Я заполняю холст небольшими кругами, чтобы сформировать форму и хотел бы уничтожить некоторые из кругов, где когда-либо пользователь нажимал на экран, используя следующую функцию.createjs борется с hitTest()

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 
         } 
        } 
       } 
     } 

Когда я использую приведенный выше код, даже если я вычислить местоположение мелких точек по отношению к бомбе кругу втягивания, точки, которые исчезают те, которые много смещена от бомбы окружность.

Я делаю что-то явно неправильно? Есть ли лучший способ подойти к этой проблеме? Большое спасибо за ваше время.

ответ

0

Я использовал следующую работу, чтобы получить желаемый результат.

  1. удостоверился, что все добавлено к сцене. избавился от контейнеров.
  2. Используйте if(bomb.hitTest(dot.ball.x - bomb.x,dot.ball.y - bomb.y)) и избавились от функции, предоставляемой createjs, чтобы найти локальные координаты объекта относительно другого объекта.

Надеюсь, это поможет кому-то, кто сталкивается с подобной проблемой.

Смежные вопросы