最近一直想用学的canvas做一个漂亮的小应用,但是,发现事情并不是想的那么简单。比如,游戏的逼真效果,需要自己来coding……

所以,自己又先做了一个小demo,算是体验一下亲手打造物理引擎的感觉吧。*_*

代码效果预览地址:http://code.w3ctech.com/detail/2524

html:

 <div class="container">
<canvas id="canvas" style="border:1px solid #ccc; opacity:0.7"></canvas>
</div>

css:

* {
padding:;
margin:;
} body {
background-color: #fff;
}

js:

 window.onload = function () {
var CANVAS_HEIGHT=600;
var CANVAS_WIDTH = 1300;
var u = 0.6;//能耗系数
var g = 4;//重力加速度
var timer;
var ball = { x: 100, y: 500, Vx: 5, Vy: 100, r: 5, color: "#4cff00" }; var canvas = document.getElementById("canvas");
canvas.height = CANVAS_HEIGHT;
canvas.width = CANVAS_WIDTH; var ctx = canvas.getContext("2d"); function draw() {
ctx.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);//清除小球在canvas上前一帧的状态
ctx.beginPath();
ctx.arc(ball.x, ball.y, ball.r, 0, 2 * Math.PI);
ctx.fillStyle = ball.color;
ctx.fill();
}
function update() {
ball.x += ball.Vx;
if (ball.Vy==0&&ball.y >= CANVAS_HEIGHT - ball.r) {
ball.Vy = 0;
}
else {
ball.Vy += g;
}
ball.y += ball.Vy;
console.log(ball.Vy);
if (ball.y>CANVAS_HEIGHT - ball.r) {
ball.y = CANVAS_HEIGHT - ball.r;
ball.Vy = -Math.ceil(ball.Vy*u);
}
if (ball.x == 0 + ball.r || ball.x == CANVAS_WIDTH) {
clearInterval(timer);
}
}
timer=setInterval(function () {
draw();
update();
}, 40);
}

canvas 模拟小球上抛运动的物理效果的更多相关文章

  1. Javascript摸拟自由落体与上抛运动 说明!

    JavaScript 代码 //**************************************** //名称:Javascript摸拟自由落体与上抛运动! //作者:Gloot //邮箱 ...

  2. [Unity算法]斜抛运动

    斜抛运动: 1.物体以一定的初速度斜向射出去,物体所做的这类运动叫做斜抛运动. 2.斜抛运动看成是作水平方向的匀速直线运动和竖直方向的竖直上抛运动的合运动. 3.它的运动轨迹是抛物线. Oblique ...

  3. HTML5 Canvas彩色小球碰撞运动特效

    脚本简介 HTML5 Canvas彩色小球碰撞运动特效是一款基于canvas加面向对象制作的运动小球动画特效.   效果展示 http://hovertree.com/texiao/html5/39/ ...

  4. WPF实现物理效果 拉一个小球

    一直以来都对物理效果有神秘感,完全不知道怎么实现的.直到看到了周银辉在老早前写的一篇博客:http://www.cnblogs.com/zhouyinhui/archive/2007/06/23/79 ...

  5. canvas动态小球重叠效果

    前面的话 在javascript运动系列中,详细介绍了各种运动,其中就包括碰壁运动.但是,如果用canvas去实现,却是另一种思路.本文将详细介绍canvas动态小球重叠效果 效果展示 静态小球 首先 ...

  6. canvas模拟中国铁路运行图

    原理说明 1.在知道canvas画布尺寸的情况下,需要将地理经纬度信息转换为canvas画布x,y坐标,因为中国地图地理经纬度坐标取值范围为73.33-135.05(经度)37-50(维度),所以第一 ...

  7. 【h5游戏开发】egret引擎p2物理引擎 - 小球碰撞地面搞笑的物理现象

    重力的方向和地面的问题 p2中默认的方向是从上到下,如果重力默认是正数的话,物体放到世界中是会从上面往下面飘的 p2中plane地面默认的方向是y轴的方向,而在p2中y轴的方向默认是从上往下 首先来看 ...

  8. HTML5 模拟现实物理效果,感受 Web 技术魅力

    Ball Pool 是一个基于 HTML5 技术的实验,模拟现实物理效果,让你在 Web 中感受自然物体的运动.玩法介绍:可以随意拖动圆球.点击页面背景.晃动浏览器.双击页面背景或者按住鼠标左键,有不 ...

  9. HTML5 模拟现实物理效果

    Ball Pool 是一个基于 HTML5 技术的实验,模拟现实物理效果,让你在 Web 中感受自然物体的运动.玩法介绍:可以随意拖动圆球.点击页面背景.晃动浏览器.双击页面背景或者按住鼠标左键,有不 ...

随机推荐

  1. lintcode : 平衡二叉树

    题目 平衡二叉树 给定一个二叉树,确定它是高度平衡的.对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1. 样例 给出二叉树 A={3,9,20,#,#,1 ...

  2. [wikioi]线段树练习 2

    http://codevs.cn/problem/1081/ #include <vector> #include <iostream> #include <string ...

  3. 安装xampp后,出现“Apache 2 Test Page powered by CentOS“

    因为是在本地测试,所以没有去考虑为什么会这样,考虑太多的原因.只要能运行就行. 所以网络搜索了一番. 最后,解决办法是: 1, 找到apachectl. 那么就在命令行敲find / -name ap ...

  4. Linux实时网络监控工具:iftop

    iftop是类似于top的实时流量监控工具,可以用来实时监控网卡的实时流量(可以指定网段).反向解析IP.显示端口信息等.夜间值班的童鞋如果发现有邮局流量异常时可以使用该软件查看详细流量状况. 下面介 ...

  5. Hibernate逍遥游记-第10章 映射继承关系-001继承关系树中的每个具体类对应一个表

    1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...

  6. MFC、WTL、WPF、wxWidgets、Qt、GTK、Cocoa、VCL 各有什么特点?

    WTL都算不上什么Framework,就是利用泛型特性对Win API做了层封装,设计思路也没摆脱MFC的影响,实际上用泛型做UI Framework也只能算是一次行为艺术,这个思路下继续发展就会变得 ...

  7. 231. Power of Two

    题目: Given an integer, write a function to determine if it is a power of two. 链接: http://leetcode.com ...

  8. python基础 - 文件读写

    完成功能: 从指定位置读文件到控制台 #! /usr/bin/python # coding=utf- 方法一. try: f = open ('/root/python/file/001.txt', ...

  9. 转Struts 权限控制

    权限最核心的是业务逻辑,具体用什么技术来实现就简单得多. 通常:用户与角色建立多对多关系,角色与业务模块构成多对多关系,权限管理在后者关系中. 对权限的拦截,如果系统请求量大,可以用Struts2拦截 ...

  10. Unity获取方法的参数和方法名称

    public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) { Console.Write ...