第五讲:使用html5中的canvas动态画出物理学上平抛运动
- <html>
- <head>
- <title>平抛运动</title>
- <script src="../js/jscex.jscexRequire.min.js" type="text/javascript"></script>
- </head>
- <body>
- <canvas id="mc" width="900px" height="500px">
- </canvas>
- <script type="text/javascript">
- var canvas = document.getElementById('mc');
- var cxt = canvas.getContext('2d');
- //定义一个小球
- var balls = [];
- balls.length = 0;
- //先定义两个球
- var ball_1 = {//平抛运动的球
- x:70,
- y:50,
- r:15,
- vx:600,//设置其水平方向的速度为600
- vy:0
- };
- var ball_2 = {//自由落体运动的球
- x:50,
- y:50,
- r:15,
- vx:0,
- vy:0
- };
- balls.push(ball_1);
- balls.push(ball_2);
- var cyc = 10;
- var a = 10; //重力加速度
- //绘制画布
- cxt.fillStyle = "#030303";
- cxt.fillRect(0,0,canvas.width,canvas.height);
- var somethingAsync = eval(Jscex.compile("async", function () {
- while (true) {
- cxt.fillStyle = "rgba(0,0,0,.3)";
- cxt.fillRect(0,0,canvas.width,canvas.height);
- cxt.fillStyle = "#fff";
- for(var i in balls){
- cxt.beginPath();
- cxt.arc(balls[i].x,balls[i].y,balls[i].r,0,Math.PI*2,true);
- cxt.closePath();
- cxt.fill();
- balls[i].y += balls[i].vy * cyc / 1000;
- balls[i].x += balls[i].vx * cyc / 1000;
- //当球触碰地面
- if (balls[i].r + balls[i].y >= canvas.height) {
- if (balls[i].vy > 0) {
- balls[i].vy *= -0.9;//在y轴方向的速度降低 相当于能量消失一部分仅仅保留0.7
- }
- }
- else {
- balls[i].vy += a;//加上两个球在 地面方向的加速度
- }
- //当球触碰左右两墙壁
- if(balls[i].x >= canvas.width || balls[i].x < balls[i].r){
- balls[i].vx *= -1;
- }
- }
- $await(Jscex.Async.sleep(cyc));
- }
- }));
- somethingAsync().start();
- </script>
- </body>
- </html>
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1bWluZ21fbXVzaWM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
第五讲:使用html5中的canvas动态画出物理学上平抛运动的更多相关文章
- HTML5中的canvas基本概念及绘图
* Canvas(画布) * 基本内容 * 简单来说,HTML5提供的新元素<canvas> * Canvas在HTML页面提供画布的功能 * 在画布中绘制各种图形 * Canvas绘制的 ...
- 【javascript】html5中使用canvas编写头像上传截取功能
[javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...
- 第七讲:HTML5中的canvas两个小球全然弹性碰撞
<html> <head> <title>小球之间的碰撞(全然弹性碰撞)</title> <script src="../js/jsce ...
- HTML5 中的 canvas 画布(一)
---恢复内容开始--- 在HTML5中新添加的元素,canvas 现在支持 IE9+的版本 注意:HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript ...
- HTML5中的Canvas详解
什么是Canvas HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图形容器,您必须使用脚本来绘制图 ...
- HTML5中的 Canvas
什么是Canvas? Canvas元素是HTML5的一部分,允许脚本语言动态渲染位图像.Canvas由一个可绘制地区HTML代码中的属性定义决定高度和宽度.JavaScript代码可以访问该地区,通过 ...
- HTML5中的Canvas和SVG
Canvas 和 SVG 都允许我们在浏览器中创建图形,但是它们在根本上是不同的. 1 SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中 ...
- HTML5 中的 canvas 画布(二)
绘制图片 一.绘制图片 context.drawImage()(即把图片放到canvas里) var image = new Image(); // 先创建图片对象 image.src = '图片的 ...
- HTML5中的Canvas
1.Canvas标签的宽高一定要设置在标签上或者采用js添加属性,如果用css去设置的话,会把画布被拉伸,相当于将默认的画布拉伸到指定位置.默认为300px*100px; <canvas wid ...
随机推荐
- Mac 下用homebrew安装配置MongoDB
---恢复内容开始--- 1.首先安装homebrew,已有就跳过 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent. ...
- No-9.vi __终端中的编辑器
vi —— 终端中的编辑器 01. vi 简介 1.1 学习 vi 的目的 在工作中,要对 服务器 上的文件进行 简单 的修改,可以使用 ssh 远程登录到服务器上,并且使用 vi 进行快速的编辑即可 ...
- Linux vim指令学习
每天查看一遍vim文档 Linux系统下命令:$ vimtutor 1.可视模式([v] 或者 [Ctrl + v])下的[U]把选中的文本变为大写 .[u]把选中的文本变为小写. 2.[数字] + ...
- java 图片合成文字或者awt包下的对话框引入自定义字体库
成就卡图片字体问题:1.下载 xxx.ttf 文件2.mkdir /usr/local/jdk1.6.0_11/jre/lib/fonts/fallback. 在jre/lib/fonts 下 ...
- 如何用纯 CSS 创作一个冒着热气的咖啡杯
效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/xjXxoz 可交互视频教程 此视 ...
- git/github初级使用
1.常见的github 国内最流行的php开发框架(thinkphp):https://github.com/top-think/thinkphp 全球最流行的php框架(laravel):https ...
- tornado框架基础10-websocket
websocket 01 长轮询 在网页,我们经常扫码登录,结合之前的学习的知识点,来思考下,前端是如何知道用户在手机上扫码登录了呢? 长轮询:客户端不断的向服务器发送请求 缺点: \1. 开销大 \ ...
- python全套视频十五期(116G)
python全套视频,第十五期,从入门到精通,基础班,就业班,面试,软件包 所属网站分类: 资源下载 > python视频教程 作者:精灵 链接:http://www.pythonheidong ...
- 【实验吧】Just Click
拿到答案需要正确地点击按钮 格式:simCTF{ } 解题链接: http://ctf5.shiyanbar.com/re/rev4.exe 由于最近在学数据库是c#编程,发现是c#,于是用.net ...
- CEF与代理
此文已由作者王荣涛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. CEF(Chromium Embedded Framework)如今已经广泛被应用于客户端软件,网易内部就有 ...