javascript - 流畅的 KineticJS 动画,控制速度

标签 javascript animation html5-canvas kineticjs frame-rate

为了好玩,我正在使用 KineticJS 创建一个简单的平面动画。

目前动画运行有点不稳定我很想有一些缓动或补间虽然我不知道如何开始。

谁能帮我算算?

<div id="container"></div>

<script src="http://www.html5canvastutorials.com/libraries/kinetic-v4.5.0-beta.js"></script>

<script defer="defer">
  var stage = new Kinetic.Stage({
    container: 'container',
    width: 870,
    height: 392
  });

  var layer = new Kinetic.Layer();

  var xPos = 0;
  var yPos = 126;
  var growthFactorX = 6;
  var growthFactorY = 2.6; 
  var growthFactorP = 3; 
  var planeRotation = 30;     

  // dashed line
  var trail = new Kinetic.Line({
    points: [{x: xPos,y: yPos}],
    stroke: 'white',
    strokeWidth: 2,
    lineJoin: 'round',
    dashArray: [6, 5]
  });

  var imageObj = new Image();
  imageObj.src = '/assets/img/plane.png'; 
  var plane = new Kinetic.Image({
    x: xPos,
    y: yPos - 15,
    width: 54,
    height: 30
  }); 
  imageObj.onload = function() {

    plane.setImage(imageObj);
    layer.add(plane);
    stage.add(layer);
  };
  plane.rotateDeg( planeRotation );


  layer.add(trail);
  stage.add(layer);

  var anim = new Kinetic.Animation(function(frame) {


        if( xPos < 500 ) {

            xPos = growthFactorX + xPos; // adds 3 to xPos on each loop

            if( xPos > 400 ) {

                yPos = yPos - growthFactorY;

                if( plane.getRotationDeg() > 0 )
                    plane.rotateDeg( (-growthFactorP) ) ;
            }

            var curPoints = trail.getPoints();
            var newPoints = [{x: xPos, y: yPos}];

            trail.setPoints(curPoints.concat(newPoints));
            plane.setX(xPos + 10);
            plane.setY(yPos - 35);
        }
        else {

            anim.stop();
        }
  }, layer);

  anim.start();      
</script>

最佳答案

我已经为你制作了一个 fiddle ,

并且改变了这些因素,我觉得它看起来很顺利,如果有任何规范请告诉我

  var xPos = 0;
  var yPos = 126;
  var growthFactorX = 5;
  var growthFactorY = 2; 
  var growthFactorP = 1; 
  var planeRotation = 30;    

fiddle link

我希望这会成功:)

关于javascript - 流畅的 KineticJS 动画,控制速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16457486/

相关文章:

javascript - 最高效的虚线矩形的方法

javascript - Canvas 绘制图像被下面的代码遮挡

javascript - 测试 'like' 按钮是否链接到 Facebook 仅可访问服务器上的内容对域有负面影响

javascript - jQuery 自动完成功能根据我输入的单词从数据库中获取项目,但结果显示为列表的水平线

javascript - 如何使每个循环在 IE7 中工作?

iphone - 在 View 过渡动画完成后执行选择器或动画

iphone - UIView 动画 block 用户交互

javascript - 关于对象上的 ES6 扩展运算符的快速问题

javascript - 如何使一个元素从不是 $this 的另一个元素移动

javascript - 不影响前面层的 HTML Canvas globalCompositeOperation