다음은 사용자가
당신도 필요가 없습니다 그들을 클릭하여이 사각형을 선택하도록하는 방법은 A [시작 연결] 버튼을, 단지 사용자가 클릭 2 개 사각형을하자 연결을한다.
사용자는 사각형을 클릭하여 선택할 수 있습니다. 그런 다음 검정색과 빨간색 테두리로 사각형이 강조 표시됩니다. 사용자는 동일한 사각형을 다시 클릭하여 선택을 취소 할 수 있습니다 (강조 표시가 제거됨).
강조 표시는 검은 색과 빨간색 테두리로 선택한 사각형을 "윤곽"처리하는 별도의 사각형입니다. 강조 표시는 별도의 레이어에서 수행됩니다.
첫째, 모든 사각형에 사용자 지정 속성의 몇 가지를 추가 할 수 있습니다.
// isHighlighted is just an on/off flag
// to mark this rectangle as highlighted by the user.
rect.isHighlighted=false;
// highlight is a second rectangle that “highlights” this rectangle
rect.highlight=null;
// Add a click event that toggles highlighting on/off
// whenever the user clicks on this rectangle
rect.on("click",function(){
highlight(this);
target.draw();
});
이 기능은 사용자가 클릭 할 때 사각형의 강조 표시를 설정/해제합니다.
이 함수는 또한 두 개의 사각형을 강조 표시하여 연결할 수 있는지 테스트합니다.
예 ... 당신이 수행하는 방법에 대한 좋은 게시물을 볼 수있는 연결 :
KineticJS drag a box with line connected 여기
// create a counter of highlighted rectangles
var highlightCount=0;
// when any rectangle is clicked, toggle its highlight on/off
function highlight(rect){
if(rect.highlighted){
rect.isHighlighted=false;
rect.highlight.remove();
highlightCount--;
}else{
var x=rect.getX()-8;
var y=rect.getY()-8;
var width=rect.getWidth()+16;
var height=rect.getHeight()+16;
var highlight=kRect(x,y,width,height,"red","black",3,target);
rect.isHighlighted=true;
rect.highlight=highlight;
highlightCount++;
// if 2 rectangles are highlighted, connect them
if(highlightCount==2){
var results="Connect these rectangles: ";
var children=layer.getChildren();
for(var i=0;i<children.length;i++){
if(children[i].isHighlighted){
results+="["+i+"]";
}
}
alert(results);
}
}
}
코드와 바이올린입니다 : http://jsfiddle.net/m1erickson/MBPkn/
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Prototype</title>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script src="http://www.html5canvastutorials.com/libraries/kinetic-v4.3.3-beta.js"></script>
<style>
#container{
border:solid 1px #ccc;
margin-top: 10px;
}
</style>
<script>
$(function(){
var stage = new Kinetic.Stage({
container: 'container',
width: 400,
height: 400
});
// create a target layer where highlights are drawn
var target = new Kinetic.Layer({name:"target"});
stage.add(target);
// create the regular layer
var layer = new Kinetic.Layer({name:"layer"});
stage.add(layer);
// create 4 rectangles
var rect1=kRect(50,50,40,40,"lightgray","skyblue",6,layer);
var rect2=kRect(125,125,40,40,"lightgray","skyblue",6,layer);
var rect3=kRect(200,50,40,40,"lightgray","skyblue",6,layer);
var rect5=kRect(275,125,40,40,"lightgray","skyblue",6,layer);
// create a counter of highlighted rectangles
var highlightCount=0;
// when any rectangle is clicked, toggle its highlight on/off
function highlight(rect){
if(rect.highlighted){
rect.isHighlighted=false;
rect.highlight.remove();
highlightCount--;
}else{
var x=rect.getX()-8;
var y=rect.getY()-8;
var width=rect.getWidth()+16;
var height=rect.getHeight()+16;
var highlight=kRect(x,y,width,height,"red","black",3,target);
rect.isHighlighted=true;
rect.highlight=highlight;
highlightCount++;
if(highlightCount==2){
var results="Connect these rectangles: ";
var children=layer.getChildren();
for(var i=0;i<children.length;i++){
if(children[i].isHighlighted){
results+="["+i+"]";
}
}
alert(results);
}
}
}
// build the specified KineticJS Rectangle and add it to the stage
function kRect(x,y,width,height,fill,stroke,strokewidth,layer){
var rect = new Kinetic.Rect({
x: x,
y: y,
width: width,
height: height,
fill: fill,
stroke: stroke,
strokeWidth: strokewidth
});
// if this is not a highlight, make it highlight-able
if(layer.getName()!="target"){
rect.isHighlighted=false;
rect.highlight=null;
rect.on("click",function(){
highlight(this);
target.draw();
});
}
layer.add(rect);
stage.draw();
return(rect);
}
}); // end $(function(){});
</script>
</head>
<body>
<div id="container"></div>
</body>
</html>
당신은 어떤을해야합니까는 당신이 시도한 코드? –