0
var stage = new Kinetic.Stage({
    container: 'container',
    width: 500,
    height: 500,
});

var layer = new Kinetic.Layer();
var selectedGroup = new Kinetic.Group({
    draggable: true,
});

var circle = new Kinetic.Circle({
    x: 10,
    y: 10,
    fill: 'red',
    radius: 10,
});

circle.on('dblclick', function () {
    console.log('x: ' + circle.getX() + ' y: ' + circle.getY());
});

selectedGroup.add(circle);
layer.add(selectedGroup);
stage.add(layer);
layer.draw();

http://jsfiddle.net/cekB3/3/

  • 円をダブルクリックすると、その位置は[10,10]です
  • その円を移動してダブルクリックすると、その位置は [10,10] になります。

順位が変わらないのはなぜ?私は何か間違ったことをしていますか?それともバグですか?

円をドラッグ可能に変更すると、その座標が変更されることに気付きましたが、1 つのグループに 2 つの円があることに問題があり、それらをすべて同時に移動して x と y を変更できるようにしたいと考えています。 .

4

2 に答える 2

0

円の位置が変化しない理由は、親要素に対して相対的であるためですgetXgetY親要素はselectedGroupドラッグ可能です。円の変化する位置を取得するには 2 つの方法があります。

  1. getAbsolutePosition円の関数を使用してその位置を取得します。

    pos = circle.getAbsolutePosition();
    console.log('position=(' + pos.x + ', ' + pos.y + ')');
    
  2. ドラッグ可能の位置と円のオフセットを使用します。

    console.log('x: ' + (selectedGroup.getX() + circle.getX()) + ' y: ' + (selectedGroup.getY() + circle.getY()));
    
于 2013-10-31T14:12:16.360 に答える