html画布实现小球沿直线下落,js+html5实现的自由落体运动效果代码

本文实例讲述了js+html5实现的自由落体运动效果。分享给大家供大家参考,具体如下:

运行效果截图如下:

b376e2b11aaa55c9acac9da99b6a4cc9.png

具体代码如下:

/p>

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

canvas自由落体

var canvasheight = 500;

var canvaswidth = 500;

var g = 9.8;

var plusV = 0.5;

function Block(vo, x, y, width, height, g, context) {

var _self = this;

_self.vo = vo || 0;

_self.x = x;

_self.y = y;

_self.prevX = x;

_self.prevY = y;

_self.g = g;

_self.height = height;

_self.width = width;

_self.prevTime = new Date().getTime();

context.fillStyle = "black";

_self.down = function () {

var time = (new Date().getTime() - _self.prevTime) / 200,

y = _self.vo * time + 1 / 2 * _self.g * time * time + _self.y;

//console.log("down:time=" + time + ":y=" + y + ":" + _self.vo);

if (y + _self.height >= canvasheight) {

_self.g--;

_self.vo = _self.g * time;

_self.prevTime = new Date().getTime();

_self.up();

} else {

context.clearRect(_self.prevX, _self.prevY - 1, _self.prevX + _self.height, _self.prevY + _self.width);

context.fillRect(_self.x, y, _self.width, _self.height);

_self.prevX = x;

_self.prevY = y;

setTimeout(function () {

_self.down();

}, 30);

}

}

_self.up = function () {

var time = (new Date().getTime() - _self.prevTime) / 200,

v = _self.vo - _self.g * time,

y = canvasheight - _self.height - _self.vo * time + 1 / 2 * _self.g * time * time;

//console.log("up:time=" + time + ":v=" + v);

if (v <= 0) {

_self.vo = 0;

_self.y = y;

_self.prevTime = new Date().getTime();

if (y + _self.height < canvasheight) {

_self.down();

} else {

return;

}

} else {

context.clearRect(_self.prevX, _self.prevY - 1, _self.prevX + _self.height , _self.prevY + _self.width);

context.fillRect(x, y, _self.width, _self.height);

_self.prevX = x;

_self.prevY = y;

setTimeout(function () {

_self.up();

}, 30);

}

}

}

window.onload = function () {

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

var context = canvas.getContext('2d');

height = canvas.offsetHeight;

var block = new Block(0, 100, 0, 20, 20, g, context);

block.down();

}

更多关于JavaScript运动相关内容感兴趣的读者可查看本站专题:《JavaScript运动效果与技巧汇总》

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值