html5钟摆效果,基于canvas实现的钟摆效果完整实例

本文实例讲述了基于canvas实现的钟摆效果。分享给大家供大家参考,具体如下:

运行效果截图如下:

7653bee5f3808b52fc7af406b4e11d1a.png

具体代码如下:

demo

body {

margin:0; padding:0;

}

#canvas {

border:2px solid gray; box-shadow:0px 0px 2px 2px #494949;

}

var canvas = document.getElementById("canvas");

var ctx = canvas.getContext("2d");

var r = 250;

var colorList = "abcdefABCDEF0123456789".split("");

var colorListLength = colorList.length;

var color = function() {

var _color = "#";

for(var i=0; i<6; i++) {

_color += colorList[Math.round(Math.random()*colorListLength)];

}

return _color;

};

var createArc = function(attrs) {

ctx.save();

ctx.beginPath();

ctx.fillStyle = attrs.color || color();

ctx.arc(attrs.x, attrs.y, attrs.r, 0, Math.PI*2);

ctx.closePath();

ctx.fill();

ctx.restore();

};

var createLine = function(from, to) {

ctx.save();

ctx.beginPath();

ctx.moveTo(from.x, from.y);

ctx.lineTo(to.x, to.y);

ctx.stroke();

ctx.closePath();

ctx.restore();

}

var createAll = function(to) {

createArc({x: 250, y: 0, r: 10, color: "black"});

createArc({x: to.x, y: to.y, r: 20, color: "black"});

createLine({x: 250, y: 0}, {x: to.x, y: to.y});

};

var minAngle = 0;

var maxAngle = Math.PI;

var addAngle = Math.PI/24;

var angle = minAngle;

var mode = "left";

var interval = setInterval(function() {

var y = Math.sin(angle)*r+200;

var x = Math.cos(angle)*r+250;

switch(mode) {

case "left":

ctx.clearRect(0, 0, 500, 500);

createAll({x: x, y: y});

angle += addAngle;

if(angle > maxAngle) {

mode = "right";

angle -= addAngle;

return;

}

break;

case "right":

ctx.clearRect(0, 0, 500, 500);

createAll({x: x, y: y});

angle -= addAngle;

if(angle < minAngle) {

mode = "default";

angle += addAngle;

return;

}

break;

case "default":

createAll({x: x, y: y});

angle += addAngle;

if(angle > maxAngle) {

mode = "left";

angle = minAngle;

return;

}

break;

}

}, 50);

更多关于js特效相关内容感兴趣的读者可查看本站专题:《jQuery动画与特效用法总结》及《jQuery常见经典特效汇总》

希望本文所述对大家JavaScript程序设计有所帮助。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值