下面是使用三角一種方法:
- 聽在旋鈕圈子的點擊。
- 計算點擊與旋鈕中心點的角度。
- 使用三角重置旋鈕線端點。
實施例的代碼和一個演示:http://jsfiddle.net/m1erickson/h1vpupkd/
<!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://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v5.1.0.min.js"></script>
<style>
body{padding:20px;}
#container{
border:solid 1px #ccc;
margin-top: 10px;
width:350px;
height:350px;
}
</style>
<script>
$(function(){
var stage = new Kinetic.Stage({
container: 'container',
width: 350,
height: 350
});
var layer = new Kinetic.Layer();
stage.add(layer);
var knob=new Kinetic.Circle({
x:100,
y:100,
radius:18,
stroke:'red',
});
knob.on('click',function(){
var cx=this.x();
var cy=this.y();
var radius=this.radius();
var pos=stage.getPointerPosition();
var mouseX=parseInt(pos.x);
var mouseY=parseInt(pos.y);
var dx=mouseX-cx;
var dy=mouseY-cy;
var angle=Math.atan2(dy,dx);
var lineX=cx+radius*Math.cos(angle);
var lineY=cy+radius*Math.sin(angle);
line.points([cx,cy,lineX,lineY]);
layer.draw();
});
layer.add(knob);
var line=new Kinetic.Line({
points:[100,100,100,85],
stroke:"red"
});
layer.add(line);
layer.draw();
}); // end $(function(){});
</script>
</head>
<body>
<h4>Click in knob to reset line.</h4>
<div id="container"></div>
</body>
</html>
非常感謝您的回答,但我正在嘗試製作一個可拖動的旋鈕 – user1420929 2014-09-05 05:19:51