讲座:html5于canvas疯狂的炮轰实现
- <html>
- <head>
- <title>坎农</title>
- <script src="../js/jscex.jscexRequire.min.js" type="text/javascript"></script>
- </head>
- <body>
- <canvas id="mc" width="1350px" height="600px">
- </canvas>
- <script type="text/javascript">
- var canvas = document.getElementById('mc');
- var cxt = canvas.getContext('2d');
- //设置画布背景颜色
- cxt.fillStyle = "#030303";
- cxt.fillRect(0, 0, canvas.width, canvas.height);
- //载入大炮图片
- var img = new Image();
- img.src = "artillery.png";
- img.onload = function(){
- cxt.drawImage(img,0,325);//将图片放在
- }
- var cyc = 10;
- var a = 50;
- var balls = [];
- //随机生成的数据
- function getRandomNumber(min,max){
- return (min + Math.floor(Math.random() * (max - min + 1)));
- }
- //循环实现大炮的轰炸
- var somethingAsync = eval(Jscex.compile("async", function () {
- while (true) {
- //模拟炮弹
- var ball = {
- x : 185,
- y : 470,
- r : getRandomNumber(0,20),
- vx : getRandomNumber(190,3000),
- vy : getRandomNumber(-3000,0)
- };
- balls.push(ball);
- //当炮弹的数量大于100时,就会从浏览器里面移除一个小球,以防止浏览器的堆栈溢出
- if(balls.length > 200){
- balls.shift();
- }
- cxt.fillStyle = "rgba(0,0,0,.3)";
- cxt.fillRect(0,0,canvas.width,canvas.height);
- cxt.fillStyle = randomColor();
- cxt.drawImage(img,0,425);
- //绘制炮弹运动的路径
- for (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;
- }
- }
- else {
- balls[i].vy += a;
- }
- //当全部的球都碰到左右两墙壁时
- if(balls[i].x >= canvas.width || balls[i].r >= balls[i].x){
- balls[i].vx *= -1;
- }
- }
- $await(Jscex.Async.sleep(cyc));
- }
- }));
- //随机生成颜色
- function randomColor(){
- var arr = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","F"];
- var str = "#";
- var index;
- for (var i = 0; i < 6; i++) {
- index = Math.round(Math.random()*15);//随机生成一个下表
- str += arr[index];
- }
- return str;
- }
- somethingAsync().start();
- </script>
- </body>
- </html>
版权声明:本文博主原创文章,博客,未经同意不得转载。
讲座:html5于canvas疯狂的炮轰实现的更多相关文章
- 用html5的canvas画布绘制贝塞尔曲线
查看效果:http://keleyi.com/keleyi/phtml/html5/7.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...
- HTML5在canvas中绘制复杂形状附效果截图
HTML5在canvas中绘制复杂形状附效果截图 一.绘制复杂形状或路径 在简单的矩形不能满足需求的情况下,绘图环境提供了如下方法来绘制复杂的形状或路径. beginPath() : 开始绘制一个新路 ...
- HTML5之Canvas时钟(网页效果--每日一更)
今天,带来的是使用HTML5中Canvas标签实现的动态时钟效果. 话不多说,先看效果:亲,请点击这里 众所周知,Canvas标签是HTML5中的灵魂,HTML5 Canvas是屏幕上的一个由Java ...
- HTML5 画布canvas元素
HTML5的canvas元素以及随其而来的编程接口Canvas API应用前景极为广泛.简单地说,canvas元素能够在网页中创建一块矩形区域,这块矩形区域可以成为画布,这其中可以绘制各种图形.可别小 ...
- HTML5 之Canvas绘制太阳系
<!DOCTYPE html> <html> <head> <title>HTML5_Canvas_SolarSystem</title> ...
- HTML5 中canvas支持触摸屏的签名面板
1.前言 最近实在是太忙了,从国庆之后的辞职,在慢慢的找工作,到今天在现在的这家公司上班大半个月了,太多的心酸泪无以言表,面试过程中,见到的坑货公司是一家又一家,好几家公司自己都只是上一天班就走了,其 ...
- 【HTML5】Canvas画布
什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,您可以控制其每一像素. canvas 拥有多种绘制路径.矩形.圆形.字符以 ...
- html5 之 canvas 相关知识(一)概念及定义
什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,您可以控制其每一像素. canvas 拥有多种绘制路径.矩形.圆形.字符以 ...
- HTML5之Canvas画布
先上代码: <canvas width="1000" height="800">浏览器不支持HTML5!</canvas> <sc ...
随机推荐
- WPF界面设计技巧(2)—自定义漂亮的按钮样式
原文:WPF界面设计技巧(2)-自定义漂亮的按钮样式 上次做了个很酷的不规则窗体,这次我们来弄点好看的按钮出来,此次将采用纯代码来设计按钮样式,不需要 Microsoft Expression Des ...
- HDU 1241 :Oil Deposits
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- pygame系列_箭刺Elephant游戏
这个游戏原名为:Chimp,我们可以到: http://www.pygame.org/docs/tut/chimp/ChimpLineByLine.html 获取到源码和详细的源码讲解 下面是我对游戏 ...
- WPF之Binding深入探讨--Darren
1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...
- mysql copy复制拷贝表数据及结构的几种方式(转)
mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助.假如我们有以下这样一个表:id username password--- ...
- 【Web优化】Yslow优化法则(四)启用Gzip压缩
Yslow的第4个经验法则指出:启用gzip压缩功能,能够降低HTTP传输的数据和时间,从而降低client请求的响应时间. 本篇是Yslow法则的第四个,主要包含三个方面的内容: 1. 什 ...
- WPS2012交叉引用提示word比wps这种强烈的更新参考
WPS2012交叉引用技巧,word比wps这点强更新參考文献 到时生成仅仅有有一条线,好像WPS不能够,word能够,假设谁知道能够补充.^_^ 1.写论文,參考文献的改动非 ...
- 建立Hibernate二级Cache
建立Hibernate二级Cache它需要两个步骤:首先,一定要使用什么样的数据并发策略,然后配置缓存过期时间,并设置Cache提供器. 有4种内置的Hibernate数据并发冲突策略,代表数据库隔离 ...
- C++写一个简单的解析器(分析C语言)
该方案实现了一个分析C语言的词法分析+解析. 注意: 1.简单语法,部分秕.它可以在本文法的基础上进行扩展,此过程使用自上而下LL(1)语法. 2.自己主动能达到求First 集和 Follow 集. ...
- BootStrap布局案例
BootStrap布局 bootstrap 2.3版与3.0版的使用区别 http://www.weste.net/2013/8-20/93261.html 以一个博客系统的首页,来介绍如何布局 1, ...