2017-02-25 9 views
1

キネティックjsファイルを使用して、クリックイベントで複数のシェイプを作成、ドラッグ、サイズ変更するという1つのタスクに取り組んでいます。キネティックファイルを使用して複数のシェイプからターゲットシェイプのサイズを変更する

ほとんどすべてのことをやったことがあります。複数の形状を作成しているときに問題が発生しています。そのとき、その時点でその形状でサイズ変更を行っているときは、最初の形状はサイズを変更するだけで、形状。

だから私はマウスの矢印のターゲット形状のサイズを変更したいと思います。ここで

を使用すると、更新機能である矩形のインデックスを変更したい私のコード、

//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

ある すなわちVAR RECT = group.get( "RECT。")[0]; 0は最初の図形を表示しているため、最初の図形のみのサイズが変更されています。 しかし、どのように私はターゲットの形状に応じてそのインデックスを変更する、私も知らない。

+0

yah私はそれを知っていますが、私はその解決策が必要です。 –

関連する問題