Resize the target shape out of multiple shape using kinectic file

I am working on one task i.e. creating, Dragging, Resize in multiple shape on a click event through kinetic js file.

Almost I have done all the thing, the problem is coming that I want when I am creating multiple shaped and after that when I am doing resize in that shape at that time the first shaped only resize it is not resizing the multiple shape.

So I want to resize the mouse arrow target shape.

Here is my code,

//This update shows the image size minimum and maximum
function update(group, activeAnchor) {
    var topLeft = group.get(".topLeft")[0];
    var topRight = group.get(".topRight")[0];
    var bottomRight = group.get(".bottomRight")[0];
    var bottomLeft = group.get(".bottomLeft")[0];
    var rect = group.get(".rect")[0];
    // update anchor positions
     switch (activeAnchor.getName()) {
         case "topLeft":
             topRight.attrs.y = activeAnchor.attrs.y;
             bottomLeft.attrs.x = activeAnchor.attrs.x;
             if(topLeft.attrs.x >= topRight.attrs.x)
             {return;}
             break;
         case "topRight":
             topLeft.attrs.y = activeAnchor.attrs.y;
             bottomRight.attrs.x = activeAnchor.attrs.x;
             if(topRight.attrs.x <= topLeft.attrs.x)
             {return;}
             break;
         case "bottomRight":
             bottomLeft.attrs.y = activeAnchor.attrs.y;
             topRight.attrs.x = activeAnchor.attrs.x;
             if(bottomLeft.attrs.x >= topRight.attrs.x)
             {return;}                                                         
             break;
         case "bottomLeft":
             bottomRight.attrs.y = activeAnchor.attrs.y;
             topLeft.attrs.x = activeAnchor.attrs.x;
             if(bottomRight.attrs.x <= topLeft.attrs.x)
             {return;}                                                                                             
             break;
     }

     rect.setPosition(topLeft.attrs.x, topLeft.attrs.y);
     rect.setSize(topRight.attrs.x - topLeft.attrs.x, bottomLeft.attrs.y - topLeft.attrs.y);
}


            //AddAnchor gives set the corner of the image
function addAnchor(group, x, y, name) {

                 var stage = group.getStage();
                 var layer = group.getLayer();

                 var anchor = new Kinetic.Circle({
                     x: x,
                     y: y,  
                     stroke: "transparent",
                     fill: "transparent",
                     strokeWidth: 5,
                     radius: 35,
                     name: name,
                     draggable: true,
                     dragBounds: {
             top: 10,
             right: stage.getWidth() -10,
             bottom: 450,
             left: 10
           }
                 });

                 anchor.on("dragmove", function() {
                     update(group, this);
                     console.log(this);
                     layer.draw();
                 });
                 anchor.on("mousedown", function() {
                     group.draggable(false);
                     this.moveToTop();
                 });
                 anchor.on("dragend", function() {
                     group.draggable(true);
                     layer.draw();
                 });
                 // add hover styling
                 anchor.on("mouseover", function() {

                     var layer = this.getLayer();
                     document.body.style.cursor = "move";
                     this.setStrokeWidth(4);
                       this.setStroke("black");
                     fill: "red";
                     strokeWidth: 2;
                     radius: 8;
                      layer.draw();
                 });

                 anchor.on("mouseout", function() {
                     var layer = this.getLayer();
                     document.body.style.cursor = "default";
                     this.setStrokeWidth(2);
                      this.setStroke("transparent");
                     layer.draw();
                 });
                    group.add(anchor);
             }

function addRect()
{
    var rectShape = new Kinetic.Rect({
                    width: 300,
                    height:120,
                    strokeWidth: 2,
                     stroke: "red",
                     name: "rect"
      });

rectShape.on("mouseover", function() {
                     var layer = this.getLayer();
                     document.body.style.cursor = "cursor";
                     this.setStrokeWidth(0);
                     this.setStroke("pink");
                     writeMessage(messageLayer, "Double Click To Remove");
                     layer.draw();                   
                 });
rectShape.on("mouseout", function() {
                     var layer = this.getLayer();
                     document.body.style.cursor = "default";
                     this.setStrokeWidth(0);
                      this.setStroke("pink");
writeMessage(messageLayer, " ");
                      layer.draw();
                 });                 
var messageLayer = new Kinetic.Layer();
        stage.add(messageLayer);
                darthVaderGroup.add(rectShape);
                addAnchor(darthVaderGroup, 0, 0, "topLeft");
                addAnchor(darthVaderGroup, 300, 0, "topRight");
                addAnchor(darthVaderGroup, 300, 120, "bottomRight");
                addAnchor(darthVaderGroup, 0, 120, "bottomLeft");
                addAnchor(darthVaderGroup, 0, 120, "bottomLeft");

      rectShape.on("dblclick", function(){
                var shapesLayer=this.getLayer();
 darthVaderGroup.remove(rectShape);
 shapesLayer.clear();
 shapesLayer.draw();
   });


}

    //This click function is for create rectangle shape
$("#textsubmitShape").live("click",function(){
addRect();
});

Answers 1

  • you want to change the index of rect which is in update function i.e. var rect = group.get(".rect")[0]; 0 is showing the first shape and that's why it is resizing the first shape only. But, how we change that index according to the target shape, that I also don't know.


Related Articles