Kineticjs的'mouseover'补间工作正在起作用,但'mouseout'补间不是

时间:2014-06-04 03:23:51

标签: javascript kineticjs

我目前正在努力使它成为一个三角形网格将扩展并移动到顶部'将鼠标悬停在图层上的图层,然后缩小回原始尺寸,并在鼠标移出原始图层时移回原始图层。但是现在只有鼠​​标悬停功能才能正常工作。

以下是我正在使用的当前代码:

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

  var layer = new Kinetic.Layer();
  var secondLayer = new Kinetic.Layer();


var tri = new Kinetic.RegularPolygon({
    x: stage.width()/2,
    y: stage.height()/2,
    sides: 3,
    radius: 30,
    fill: '#111111',
    closed: true,
    shadowColor: '#5febff',
    shadowBlur: 5,
    shadowOpacity: 0.18,
});

  layer.add(tri);

  stage.add(layer);
  stage.add(secondLayer);

  // bind stage handlers
  layer.on('mouseover', function(evt) {
    var shape = evt.targetNode;
    shape.moveTo(secondLayer);
    stage.draw()
    var tween = new Kinetic.Tween({
    node: shape,
    duration: 0.05,
    scaleX: 1.5,
    scaleY: 1.5
    });
    tween.play()
  });

  secondLayer.on('mouseout', function(evt) {
    var shape = evt.targetNode;
    var tween = new Kinetic.Tween({
    node: shape,
    duration: 0.05,
    scaleX: 1.5,
    scaleY: 1.5
    });
    tween.reverse()
    shape.moveTo(layer);
    stage.draw();

  });

这是一个jsfiddle:http://jsfiddle.net/y2C3Z/1/

1 个答案:

答案 0 :(得分:2)

  1. 您只能在tween.reverse()之后使用tween.play()。因此,您只需将比例属性更改为原始值。

  2. 不要在图层之间移动形状,同时在补间下形状。您可以在补间完成后移动形状。

  3. http://jsfiddle.net/y2C3Z/3/