我想拖動一個點(圓圈),這是完美的工作。我唯一無法弄清楚的是,如何將我的點的更新位置(座標)寫入變量?對齊SVG(JS)更新座標
var s = Snap("#main");
var p1 = {x:50, y:150, new:0};
var p2 = {x:100, y:300};
var radius = 10;
var circle1 = s.circle(p1.x, p1.y, radius);
var circle2 = s.circle(p2.x, p2.y, radius);
var line = s.line(p1.x, p1.y, p2.x, p2.y);
line.attr({
stroke: "#000",
strokeWidth: 5,
strokeLinecap:"round"
});
var move = function(dx,dy) {
this.attr({
// transform: this.data('origTransform') + (this.data('origTransform') ? "T" : "t") + [dx, dy]
cx: p1.x + dx,
cy: p1.y + dy
});
line.attr({
x1: p1.x + dx,
y1: p1.y + dy
});
};
var start = function() {
// this.data('origTransform', this.transform().local);
}
var stop = function() {
p1.x = +line.attr('x1');
p1.y = +line.attr('y1');
}
circle1.drag(move, start, stop);
document.getElementById("calc").innerHTML = p1.x;
html, body {
height: 100%;
background-color: #f3f3f3;
padding: 5px;
}
* {
box-sizing: border-box;
}
#main {
background-color: white;
border: 1px solid gray;
width: 100%;
height: 100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.4.1/snap.svg-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="calc"></div>
<svg id="main"></svg>
的問題是,該座標提供給我,只要我qoutput入函數「搬家」,但似乎一旦功能「拖拽」的執行,我失去了這個信息。我如何克服這一點?
喜羅伯特,看起來你的問題有一些格式問題,因爲你似乎沒有鏈接到你想要的代碼。如果你可以在你的「移動」和「拖動」功能中包含代碼片段,其中你的座標參數分別可用和缺失,這也會很有幫助。 – MaxPRafferty
感謝Max,我進入代碼片段直接在這裏看到JS問題。 – x4ecro