笔记四(正弦波平滑运动)

这里创建一个正弦波平滑运动的动画。
utils.js文件不变,见笔记三。
创建一个Ball构造函数。文件名:ball.js。

function Ball(radius , color){
    if (radius === undefined) {
        radius = 40;
    };
    if (color === undefined) {
        color = "#0099CC";
    };
    this.x = 0;
    this.y = 0;
    this.radius = radius;
    this.rotation = 0;
    this.scaleX = 1;
    this.scaleY = 1;
    this.color = color;
    this.lineWidth = 1;
}
Ball.prototype.draw = function(context){
    context.save();
    context.translate(this.x , this.y);
    context.scale(this.scaleX , this.scaleY);
    context.lineWidth = this.lineWidth;
    context.fillStyle = this.color;
    context.beginPath();
    context.arc(0,0,this.radius,0,(Math.PI * 2),true);
    context.closePath();
    context.fill();
    if (this.lineWidth > 0) {
        context.stroke();
    };
    context.restore();
};

创建html文件,文件名:bobbing.html.。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>平滑运动</title>
<style type="text/css">
    #canvas{background-color: #99cc33;}
</style>
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<script type="text/javascript" src="utils.js"></script>
<script type="text/javascript" src="ball.js"></script>
<script type="text/javascript">
    window.onload = function(){
        var canvas = document.getElementById("canvas"),
            context = canvas.getContext("2d"),
            ball = new Ball(),
            angle = 0;
        ball.x = canvas.width/2;
        ball.y = canvas.height/2;
        if (!window.requestAnimationFrame) {
            window.requestAnimationFrame = (window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback){
                return window.setTimeout(callback,1000/60);
            })
        };
        (function drawFrame(){
            window.requestAnimationFrame(drawFrame,canvas);
            context.clearRect(0,0,canvas.width,canvas.height);
            (ball.x <= canvas.width)?(ball.x += 1):(ball.x = 0);
            ball.y = canvas.height/2 + Math.sin(angle)*50;
            angle +=0.1;
            ball.draw(context);
        }());
    };
</script>
</body>
</html>

效果图:
平滑运动效果图

参见《HTML5+Javascript动画基础》。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值