使用KineticJS重置为默认位置

时间:2012-05-24 19:12:20

标签: javascript kineticjs

我的游戏中有以下圈子。玩家将他们拖入游戏中的不同位置。当玩家选择,再次播放时,我希望形状返回到init函数中声明的原始位置。我该怎么办呢?谢谢。

stage = new Kinetic.Stage({
   container: "container",
   width: 900,
   height: 550
});

shapes = new Kinetic.Layer();

function init() {
  circle1 = new Kinetic.Circle({
     x: stage.getWidth() / 3.2,
     y: stage.getHeight() / 3.2,
     radius: radius,
     fill: "blue",
     stroke: "black",
     strokeWidth: 4,
     name: "circle",
     draggable: true
});  

shapes.add(circle1)
stage.add(shapes)

3 个答案:

答案 0 :(得分:2)

将默认值存储在单独的变量中,然后使用.setPosition( x, y )重置它:

//store settings
var settings = {
     x: stage.getWidth() / 3.2,
     y: stage.getHeight() / 3.2,
     radius: radius,
     fill: "blue",
     stroke: "black",
     strokeWidth: 4,
     name: "circle",
     draggable: true
}; 

//use settings
circle1 = new Kinetic.Circle(settings);

//after move, reset using:
circle1.setPosition(settings.x,settings.y);

答案 1 :(得分:2)

你也可以使用超级方便的setAttrs方法:

circle1.setAttrs(settings);

干杯!

答案 2 :(得分:0)

我知道这个问题相当陈旧,但我刚刚解决了这个问题。

stage.removeChildren();
stage.setAttrs(stage.defaultNodeAttrs);

stage.reset()不再起作用,但这应该可以做你想要的。