我使用的是KineticJS,至此它已經是一次很棒的體驗。我有一個問題是關於拖拉。我將這個例子中的圖像設置爲'draggable:true',但是在第一次拖動它之後,它不能再次移動。KineticJS可拖動的圖像卡住後阻止
var stage = new Kinetic.Stage({
container: 'container',
width: 2754,
height: 1836
});
var layer = new Kinetic.Layer();
var scale = '0.16339869281045751633986928104575';
var imageObj = new Image();
imageObj.onload = function() {
var img = new Kinetic.Image({
x: 0,
y: 0,
height:612,
width:612,
image: imageObj,
draggable: true,
dragBoundFunc: function (pos) {
console.log(img.getAttrs());
return {
x: Math.floor((pos.x/scale)/306)*306,
y: Math.floor((pos.y/scale)/306)*306
};
}
});
// add the shape to the layer
layer.add(img);
// add the layer to the stage
stage.add(layer);
};
imageObj.src = 'http://www.html5canvastutorials.com/demos/assets/yoda.jpg';
任何幫助表示讚賞。對於額外的功勞,你可以提出一些方法來使拖動更平滑。
謝謝!
編輯:我已經注意到,圖像拖初始時間之後,dragBoundFunc不再稱爲當用戶試圖拖動圖像
,如果我拖動圖像返回到0它也適用,0但沒有其他時間
這是令人失望的。我希望畫布輸出/保存2754x1836的圖像,但在450x300處顯示畫布。你能想到我能做到這一點的任何方式嗎?我需要更高的分辨率,因爲我最終打印圖像,450x300不會。 – IIDenverII 2013-03-02 00:56:58
您可以將舞臺設置爲450 x 300和可縮放和draggbale,並添加一個圖層2754 x 1836.嘗試一下,如果您有任何問題嘗試,請嘗試一下。在那裏,做到了。 – allenhwkim 2013-03-02 16:01:15
這就是我所需要的!這工作,非常感謝你! – IIDenverII 2013-03-02 20:03:49