CreateJS 学习4 动画、TweenJS

水平移动动画示例

<html>
    <head>
            <script src="easeljs.min.js" charset="utf-8"></script>
    </head>
    <body>
        <canvas id="canvas" width="500" height="300"></canvas>
        <script>
            var canvas = document.getElementById("canvas");
            var stage = new createjs.Stage(canvas);//直接使用canvas的ID
            var shape=new createjs.Shape();
            shape.graphics.beginFill("red").drawRect(0,0,50,50);  


            createjs.Ticker.addEventListener("tick", tick);
            createjs.Ticker.setFPS(60);

            stage.addChild(shape);
            function tick(e) {

                if(shape.x>stage.canvas.width){  
                    shape.x=0;  
                }  
                shape.x++;  
                stage.update();
            }
        </script>
    </body>
</html>

这里写图片描述

TweenJS

补间动画

中文文档:
http://www.createjs.cc/tweenjs/docs/modules/TweenJS.html

简单的补间动画

这个渐变将渐变目标alpha属性用一秒从0渐变到1,然后调用handleComplete函数。

<html>
    <head>
            <script src="easeljs.min.js" charset="utf-8"></script>
            <script src="tweenjs.min.js" charset="utf-8"></script>
    </head>
    <body>
        <canvas id="canvas" width="500" height="300"></canvas>
        <script>
            var canvas = document.getElementById("canvas");
            var stage = new createjs.Stage(canvas);//直接使用canvas的ID
            var shape=new createjs.Shape();
            shape.graphics.beginFill("red").drawRect(0,0,50,50);  

            createjs.Ticker.addEventListener("tick", tick);
            createjs.Ticker.setFPS(60);

            stage.addChild(shape);
            shape.alpha=0;
            createjs.Tween.get(shape).to({alpha:1},1000).call(handleComplete);
            function handleComplete(){
                console.log('end');
            }
            function tick(e) {
                stage.update();
            }
        </script>
    </body>
</html>

这里写图片描述

可链式编程的补间动画
 target.alpha = 1;
    createjs.Tween.get(target).wait(500).to({alpha:0, visible:false}, 1000).call(handleComplete);
    function handleComplete() {
        //渐变完成执行
    }
水平移动tweenjs代码
<html>
    <head>
            <script src="easeljs.min.js" charset="utf-8"></script>
            <script src="tweenjs.min.js" charset="utf-8"></script>
    </head>
    <body>
        <canvas id="canvas" width="500" height="300"></canvas>
        <script>
            var canvas = document.getElementById("canvas");
            var stage = new createjs.Stage(canvas);//直接使用canvas的ID
            var shape=new createjs.Shape();
            shape.graphics.beginFill("red").drawRect(0,0,50,50);  

            createjs.Ticker.addEventListener("tick", tick);
            createjs.Ticker.setFPS(60);

            stage.addChild(shape);

            var position={x:100,y:0};
            var tween = new createjs.Tween.get(shape,{loop:true}).to({x:500},2000);


            function tick(e) {

                stage.update();
            }
        </script>
    </body>
</html>

这里写图片描述

说明:

  • get()获取要添加运动轨迹的元素
    如果需要动画循环进行,只需要加上{loop:true},还有其他选项,比如override
  • wait()可以让动画延迟播放
  • to()来确定运动的轨迹
    to()的第一个参数{x:1000},指明了x坐标的终点,而且在{}中不只可以改变坐标,
    alpha:0.5可以改变透明度,
    scaleX/Y = 2可以改变大小,
    rotation:360可以改变角度,实现旋转;
    to()的第二个参数,指明动画的时常,也是就是x坐标运动到终点所用的时间,
    第三个参数createjs.Ease,可以设置运动的轨迹和运动的方式。
    call(),可以在动画结束后,调用一个函数。

一个复杂点的链式操作

<html>
    <head>
            <script src="easeljs.min.js" charset="utf-8"></script>
            <script src="tweenjs.min.js" charset="utf-8"></script>
    </head>
    <body>
        <canvas id="canvas" width="500" height="300"></canvas>
        <script>
            var canvas = document.getElementById("canvas");
            var stage = new createjs.Stage(canvas);//直接使用canvas的ID
            var circle=new createjs.Shape();
            circle.graphics.beginFill("red").drawCircle(20,20,50);  

            createjs.Ticker.addEventListener("tick", tick);
            createjs.Ticker.setFPS(60);

            stage.addChild(circle);

            var position={x:100,y:0};
            createjs.Tween.get(circle,{loop:true}).to({x:500},2000)  
               .to({y:300,alpha:0.2},2000)  
               .to({x:100,alpha:1, scaleX:1.5,scaleY:1.5},2000)  
               .to({y:100, scaleX:1,scaleY:1},2000);  

            function tick(e) {
                stage.update();
            }
        </script>
    </body>
</html>

效果:
这里写图片描述

弹跳效果

<html>
    <head>
            <script src="easeljs.min.js" charset="utf-8"></script>
            <script src="tweenjs.min.js" charset="utf-8"></script>
    </head>
    <body>
        <canvas id="canvas" width="500" height="700"></canvas>
        <script>
            var canvas = document.getElementById("canvas");
            var stage = new createjs.Stage(canvas);//直接使用canvas的ID
            var circle=new createjs.Shape();
            circle.graphics.beginFill("red").drawCircle(60,20,50);  

            createjs.Ticker.addEventListener("tick", tick);
            createjs.Ticker.setFPS(60);

            stage.addChild(circle);

            createjs.Tween.get(circle,{loop:true}).wait(200).to({y:450},2000,createjs.Ease.bounceOut);  

            function tick(e) {
                stage.update();
            }
        </script>
    </body>
</html>

这里写图片描述
其它更多Ease效果演示:
http://andysaia.com/blog/tweenjs/
更多demo:
https://www.createjs.com/demos/tweenjs/tween_circles

逐帧动画

<html>
    <head>
            <script src="easeljs.min.js" charset="utf-8"></script>
    </head>
    <body>
        <canvas id="canvas" width="500" height="300"></canvas>
        <script>

          var canvas = document.getElementById("canvas"),
            stage = new createjs.Stage(canvas);

          function setup() {
              var spritesheet = new createjs.SpriteSheet({
                      "images": ['http://www.igeekbar.com/igeekbar/networks/uploadimgthumb/7a59e1d8-ac16-47d7-a642-fd626cbf3efe.jpg'],
                      "frames": {"height": 195, "count": 11, "width": 313},
                      "animations": { run: [0,10]}
                  });

              var character = new createjs.Sprite(spritesheet, "run");
              character.framerate = 11; 
              character.play();//播放动画
              stage.addChild(character);

              createjs.Ticker.addEventListener("tick", tick);
          }

          function tick(event) {
              stage.update();
          }

          setup();
        </script>
    </body>
</html>

动画图片:
这里写图片描述

运行效果:
这里写图片描述

参考:
http://blog.csdn.net/lanix516/article/details/47323573

另外tweenjs还有 CSSPluginjs、MotionGuidePlugin插件库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值