2017-02-25 84 views
1

我正在處理一個任務,即通過動態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(); 
}); 

回答

1

要更改矩形的索引,其是在更新函數 即變種RECT = group.get( 「矩形」。)[0]; 0顯示第一個形狀,這就是爲什麼它僅調整第一個形狀。 但是,我們如何根據目標形狀來改變這個指標,我也不知道。

+0

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