2013-12-22 1 views
0

Я рисую 2 фигуры, один над другим. Функция getObjectsUnderPoint возвращает только одну форму, даже точка является частью обеих фигур. Точка, которую я получаю в обработчике addEventListener верхней формы. Полностью jsfiddle example.easeljs: getObjectsUnderPoint не возвращает все формы

var stage; 

function init() { 
    stage = new createjs.Stage("canvas"); 
    var rect = new createjs.Shape(); 
    rect.graphics.beginFill("#ff0000").drawRect(10, 10, 100, 100); 
    stage.addChild(rect); 
    var circle = new createjs.Shape(); 
    circle.graphics.beginFill("#00ff00").drawCircle(60, 60, 40); 
    circle.addEventListener("click", onClick); 
    stage.addChild(circle); 
    stage.update(); 
} 

function onClick(e) { 
    // the length should be 2: circle + rectangle, but is only 1 ??? 
    alert(stage.getObjectsUnderPoint(e.stageX, e.stageY).length); 
} 

ответ

2

Это ошибка в 0.7.1, что с тех пор было исправлено и подтверждено быть исправлена ​​в версии 0.8.2, как Пим Шааф продемонстрировал с this fiddle. Если вы застряли с версией 0.7.1, вы можете использовать обходное решение, описанное here, путем итерации над дочерними элементами контейнера и вызова hitTest(x, y), дающего mouseX и mouseY в качестве параметров.

+0

Ссылка умерла. По-видимому, это исправлено в более поздних версиях easeljs (0.8.2). См. Http://jsfiddle.net/84oz06t4 с EaselJS 0.8.2. –

+1

@PimSchaaf: Я отредактировал свой ответ, чтобы лучше объяснить проблему. Спасибо, что привлекли к себе неработающую ссылку. – Andrew

+0

Отлично, спасибо! (маленькая опечатка на мое имя, но не беспокойство xD) –

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

  • Нет связанных вопросов^_^