Обнаружение падения в мольберте

Я новичок в EaselJS. Интересно, как я могу обнаружить перетаскивание одного контейнера на другой контейнер в EaselJS. Итак, я хочу получить отброшенный контейнер в прослушивателе событий целевого контейнера. Есть примеры по этому поводу? Я не смог найти это в примерах перетаскивания EaselJS.

Спасибо


person mvermand    schedule 16.04.2014    source источник


Ответы (3)


Вы также можете использовать getObjectsUnderPoint. Вот быстрый образец, который я собрал. http://jsfiddle.net/lannymcnie/6rh7P/1/

var targets = stage.getObjectsUnderPoint(stage.mouseX, stage.mouseY);

Это из другого поста, задающего аналогичный вопрос. Я также разместил больше информации об этом. EaselJS: соедините 2 контейнера/фигуры с помощью линии

person Lanny    schedule 22.04.2014

В событии pressmove или stagemouseup вы можете проверить, находится ли позиция мыши (stage.mouseX и stage.mouseY) над родительским контейнером. Для проверки можно использовать метод hitTest.

Обратите внимание, что hitTest будет работать только в том случае, если в вашем родительском контейнере есть хотя бы один прослушиватель событий мыши, что, как мне кажется, является ошибкой в ​​​​EaselJS 0.7.1.

person renatopp    schedule 22.04.2014

Я сделал этот класс на coffeescript, чтобы решить эту проблему:

class DragContainer
    DragContainer.prototype = new createjs.Container()
    DragContainer::Container_initialize = DragContainer::initialize
    constructor: (opts) ->
        @initialize opts
    DragContainer::initialize = (opts) ->
        @Container_initialize()
        @droptargets = new Array()
        @on 'mousedown', @handleMouseDown
    handleMouseDown: (e) =>
        @on 'pressup', (ev)=>
            @removeAllEventListeners 'pressup'
            if @droptargets and @droptargets.length > 0
                @evaluateDrop e
    evaluateDrop: (e) =>
        target = null
        dropped = false
        for drop in @droptargets
            pt = drop.globalToLocal stage.mouseX, stage.mouseY
            if drop.hitTest pt.x, pt.y
                target = drop
                dropped = true
        if dropped
            @dispatchEvent {type: 'dropped', currentTarget: target}
        else
            @dispatchEvent {type: 'dropped', currentTarget: null}

Свойство droptargets — это массив, в котором хранятся объекты, которые вы хотите связать с удалением вашего контейнера.

person Wenceslao Negrete    schedule 13.04.2015