讲座: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>

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-10-12 18:35:34

讲座:html5于canvas疯狂的炮轰实现的相关文章

HTML5程序设计 Canvas API

检测浏览器支持情况 <script type="text/javascript"> try { document.createElement("Canvas").getContext("2d"); document.getElementById("support").innerHTML = "OK"; } catch (e) { document.getElementById("sup

HTML5 画布 Canvas

利用html5的canvas元素使用 JavaScript 在网页上绘制图像. 通过规定尺寸.颜色和位置,来绘制一个圆: <!DOCTYPE htma> <html> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #3CF;"> Your browser does not

html5中用canvas画八大行星围绕太阳转

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8&

HTML5 画布canvas元素

HTML5 画布canvas元素 HTML5的canvas元素以及随其而来的编程接口Canvas API应用前景极为广泛.简单地说,canvas元素能够在网页中创建一块矩形区域,这块矩形区域可以成为画布,这其中可以绘制各种图形.可别小看了这个画布,它能实现无限的可能性.接下来我们从最简单的部分开始,逐步认识Canvas的强大功能. 1.在页面中添加canvas元素: 默认情况下,Canvas所创建的矩形区域大小为宽300像素,高150像素,不过我们可以使用width和height属性来自定义画布

HTML5在canvas中绘制复杂形状附效果截图

HTML5在canvas中绘制复杂形状附效果截图 一.绘制复杂形状或路径 在简单的矩形不能满足需求的情况下,绘图环境提供了如下方法来绘制复杂的形状或路径. beginPath() : 开始绘制一个新路径. closePath() : 通过绘制一条当前点到路径起点的线段来闭合形状. fill() , stroke() : 填充形状或绘制空心形状. moveTo() : 将当前点移动到点(x,y). lineTo() : 从当前点绘制一条直线到点(x,y). arc(x,y,r,sAngle,eAn

HTML5之Canvas画正方形

1.设计源码 <!DOCTYPE html> <head> <meta charset="utf-8" /> <title>HTML5之Canvas画正方形</title> <script type="text/javascript"> function drawFour(id) { //获取canvas元素 var canvas = document.getElementById("

HTML5之Canvas画圆形

1.设计源码 <!DOCTYPE html> <head> <meta charset="utf-8" /> <title>HTML5之Canvas画圆形</title> </head> <body onLoad="drawFour('canvas')"> <canvas id="canvas" width="1200" height=&

HTML5之Canvas时钟(网页效果--每日一更)

今天,带来的是使用HTML5中Canvas标签实现的动态时钟效果. 话不多说,先看效果:http://webfront.verynet.cc/pc/canvas-clock.html 众所周知,Canvas标签是HTML5中的灵魂,HTML5 Canvas是屏幕上的一个由JavaScript控制的即时模式位图区域.即时模式是指在画布上呈现像素的方式, HTML5 Canvas通过JavaScript调用CanvasAPI,在每一帧完全重绘屏幕上的位图.详细将在下面代码进行说明. HTML结构代码

HTML5 在canvas中绘制矩形

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/32930501 一.绘制矩形 canvas使用原点(0,0)在左上角的坐标系统,x坐标向右递增,y坐标向下递增. 使用绘图环境的矩形绘制函数来绘制矩形. fillRect(x,y,width,height) : 绘制一个实心的矩形. strokeRect(x,y,width,height) : 绘制一个空心的矩形. clearRect(x,y,width,height) : 清