Easeljs: getObjectsUnderPoint не возвращает все фигуры

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

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

person Petr Felzmann    schedule 22.12.2013    source источник


Ответы (1)


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

person Andrew    schedule 24.12.2013
comment
Ссылка умерла. Похоже, это исправлено в более поздних версиях станка (0.8.2). См. jsfiddle.net/84oz06t4 с EaselJS 0.8.2. - person Pim Schaaf; 26.08.2016
comment
@PimSchaaf: я отредактировал свой ответ, чтобы лучше объяснить проблему. Спасибо, что обратили мое внимание на неработающую ссылку. - person Andrew; 26.08.2016
comment
Большое спасибо! (небольшая опечатка в моем имени, но не беспокойтесь xD) - person Pim Schaaf; 26.08.2016