使用运动文件将目标形状调整为多个形状

问题描述:

我正在处理一个任务,即通过动态js文件在单击事件中创建,拖动,调整多个形状。使用运动文件将目标形状调整为多个形状

几乎我做了所有的事情,问题来了,我想创建多个形状,然后当我在那个时候做的形状调整大小第一个形状只调整它不是调整多个形状。

所以我想调整鼠标箭头目标形状。

这是我的代码,

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

要更改矩形的索引,其是在更新函数 即变种RECT = group.get( “矩形”。)[0]; 0显示第一个形状,这就是为什么它仅调整第一个形状。 但是,我们如何根据目标形状来改变这个指标,我也不知道。

+0

嗯我知道,但我想要的解决方案。 –