一段很棒的利用html5-canvas及javascript产生三维星空效果的代码!
2012-03-20 13:22
651 查看
从网上搜集到的一段利用纯html5-canvas以及javascript生成三维星空效果的代码。代码的核心部分是“<script></script>”标签中包含的外部javascript代码-html5_3d_animation.js,即本文的第二段代码。代码的思想很简单:赋予每颗星星随机的x,y,z三个(三维)坐标,分别代表他们在星空(canvas)中的横坐标位置,纵坐标位置以及在三维空间中的尺度信息。利用canvas将每颗星星画在画布上。然后利用javascript中全局变量即局部变量的特点来计算星星的下一个位置信息,重绘。。。只需一些简单的修改,就可令代码产生不同的效果!
html5_3d_animation.js
<html> <head> <title>Simple 3D on HTML5 canvas</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script> <script type="text/javascript" src="html5_3d_animation.js"></script> <script language="javascript" type="text/javascript"> $(function() { $("#html5_3d_animation").html5_3d_animation({ window_width: '600', window_height: '300', window_background: '#00113F', star_count: '1000', star_color: '#FBFFAF', star_depth: '100' }); }); </script> </head> <body> <div class="wrap"> <canvas id="html5_3d_animation">Internet Explorer Not Supported</canvas> <div id="show"></div> </div> <div style="width:98%;margin:20px auto; padding:50px 0; clear:both; overflow:hidden;"> </body> </html>
html5_3d_animation.js
(function(a){ a.fn.html5_3d_animation=function(p){ var p=p||{}; var w_w=p&&p.window_width?p.window_width:"500"; var w_h=p&&p.window_height?p.window_height:"400"; var w_b=p&&p.window_background?p.window_background:"#000"; var s_c=p&&p.star_count?p.star_count:"600"; var s_color=p&&p.star_color?p.star_color:"#FFF"; var s_d=p&&p.star_depth?p.star_depth:"250"; var dom=a(this); var fov = parseInt(s_d); var SCREEN_WIDTH = parseInt(w_w); var SCREEN_HEIGHT = parseInt(w_h); var HALF_WIDTH = SCREEN_WIDTH/2; var HALF_HEIGHT = SCREEN_HEIGHT/2; var c_id = dom.attr("id"); var numPoints = s_c; dom.attr({ width: w_w, height: w_h}); setup(); function setup() { function draw3Din2D(point3d) { x3d = point3d[0]; y3d = point3d[1]; z3d = point3d[2]; var scale = fov/(fov+z3d); var x2d = (x3d * scale) + HALF_WIDTH; var y2d = (y3d * scale) + HALF_HEIGHT; c.lineWidth= scale; c.strokeStyle = s_color; c.beginPath(); c.moveTo(x2d,y2d); c.lineTo(x2d+scale,y2d); c.stroke(); } var canvas = document.getElementById(c_id); var c = canvas.getContext('2d'); var points = []; function initPoints() { for (i=0; i<numPoints; i++) { point = [(Math.random()*400)-200, (Math.random()*400)-200 , (Math.random()*400)-200 ]; points.push(point); } } function render() { c.fillStyle=w_b; c.fillRect(0,0, SCREEN_WIDTH, SCREEN_HEIGHT); for (i=0; i<numPoints; i++) { point3d = points[i]; z3d = point3d[2]; z3d-=4; if(z3d<-fov) z3d +=400; point3d[2] = z3d; draw3Din2D(point3d); } var show = document.getElementById('show'); show.appendChild('p'); } initPoints(); var loop = setInterval(function(){ render(); }, 50); } } })(jQuery);
相关文章推荐
- 利用html5-canvas及javascript产生三维星空效果的代码
- 浏览器兼容性问题,为什么同一段JavaScript代码,不同浏览器上为什么会产生不同效果,甚至bug?浏览器不就是严格按照JavaScript语法进行的吗?java代码为什么从来没听过有什么兼容问题?
- javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
- javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
- [H5-Compress-Image]利用canvas实现 javascript 图片压缩处理_基于requirejs模块化的代码实现
- javascript和HTML5利用canvas构建猜牌游戏实现算法
- Javascript和HTML5 利用canvas构建 Web五子棋游戏程序设
- 利用JavaScript实现新闻滚动效果(实例代码)
- HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
- 用HTML5的canvas实现抽奖刮刮卡的效果(只需十几行代码)
- Javascript和HTML5 利用canvas构建 Web五子棋游戏程序设计
- 利用canvas实现的加载动画效果实例代码
- JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
- HTML5 Canvas 绘制二次曲线【每日一段代码31】
- javascript 和HTML5 利用canvas构建 猜牌游戏(让我猜猜你心中的牌)
- Javascript和HTML5 利用canvas构建 Web五子棋游戏程序设计【图文说明】
- 类似msn的提示效果代码系列四:利用反射和嵌入JavaScript资源封装消息提示的C#类
- HTML5 Canvas 矩形【每日一段代码5】
- JavaScript html5 canvas绘制时钟效果(二)
- HTML5 Canvas 绘制螺旋线【每日一段代码30】