Createjs Drag and drop — цель перетаскивания не регистрируется

Я пытаюсь сделать перетаскивание. Кажется, я не могу зарегистрировать падение, когда отпускаю круг над прямоугольником. Как решить проблему? Моя цель всегда нулевая, независимо от того, куда я ее бросаю на сцене или над прямоугольником.

var rectangle = new createjs.Container();
        rect = new createjs.Shape();
        rect.graphics.beginFill("blue").drawRect(50, 50, 250, 210);
        rect.name = "rectangle";
        rect.x = 300;
        rect.y = 300;
        rectangle.addChild(rect);
        stage.addChild(rectangle);

        circle = new createjs.Shape();
        circle.name = "mycircle";
        circle.graphics.beginFill("red").drawCircle(15, 15, 15);
        circle.x = 15;
        circle.y = 80;


        var dragger = new createjs.Container();

        dragger.addChild(circle);
        dragger.name = "dragger1";
        stage.addChild(dragger);

        dragger.on("pressmove", function (evt) {
            evt.currentTarget.x = evt.stageX;
            evt.currentTarget.y = evt.stageY;
            stage.update();
        });

        dragger.on("pressup", function (evt) {
            var target = dragger.getObjectUnderPoint(evt.rawX, evt.rawY, 0);
            console.log("this is my target");
            console.log(target);

        });

person CsharpBeginner    schedule 07.10.2015    source источник


Ответы (1)


Вы вызываете dragger.getObjectUnderPoint(), который возвращает объект в пределах dragger, который находится под точкой. Я предполагаю, что вы хотите, чтобы он возвращал rect, которого нет в dragger. Вместо этого просто запустите stage.getObjectUnderPoint().

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

http://jsfiddle.net/gskinner/by3humee/

person gskinner    schedule 07.10.2015
comment
Спасибо! это действительно помогло - person CsharpBeginner; 08.10.2015