javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码


Posted in Javascript onAugust 04, 2015

本文实例讲述了javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果。分享给大家供大家参考。具体如下:

下面的玫瑰绘制用到了HTML 5的canvas,所以你的浏览器需要支持HTML 5。个人还是比较推荐chrome,这个效果在Firefox下也会稍卡。

效果图:

javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码

演示地址:http://demo.3water.com/js/2015/js-flower-canvas.html

具体代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <title>3D玫瑰花</title>
 <meta name="Generator" content="EditPlus">
 <meta name="Author" content="">
 <meta name="Keywords" content="">
 <meta name="Description" content="">
 </head>
 <body>
 情人节快到了,这里送大家一枝玫瑰,无论是有对象还是没对象的朋友们,情人节快乐~
下面的玫瑰绘制用到了HTML 5的canvas,所以你的浏览器需要支持HTML 5。个人还是比较推荐chrome,这个效果在Firefox下也会稍卡。
<div id="demo" style="width:520; height:500px;"><canvas id="c" height="500" width="500"></canvas></div>
<script> 
  var b = document.body;
  var c = document.getElementsByTagName('canvas')[0];
  var a = c.getContext('2d');
  var canvas = document.getElementsByTagName('canvas')[0];
  var ctx = canvas.getContext('2d');
  document.body.clientWidth; 
  with(m=Math)C=cos,S=sin,P=pow,R=random;
  c.width=c.height=f=500;h=-250;
  function p(a,b,c){
    if(c>60)
      return[S(a*7)*(13+5/(.2+P(b*4,4)))-S(b)*50,b*f+50,625+C(a*7)*(13+5/(.2+P(b*4,4)))+b*400,a*1-b/2,a];
    A=a*2-1;
    B=b*2-1;
    if(A*A+B*B<1)
    {
      if(c>37)
      {
        n=(j=c&1)?6:4;o=.5/(a+.01)+C(b*125)*3-a*300;
        w=b*h;
        return[o*C(n)+w*S(n)+j*610-390,o*S(n)-w*C(n)+550-j*350,1180+C(B+A)*99-j*300,.4-a*.1+P(1-B*B,-h*6)*.15-a*b*.4+C(a+b)/5+P(C((o*(a+1)+(B>0?w:-w))/25),30)*.1*(1-B*B),o/1e3+.7-o*w*3e-6]
      }
      if(c>32)
      {
        c=c*1.16-.15;o=a*45-20;w=b*b*h;z=o*S(c)+w*C(c)+620;
        return[o*C(c)-w*S(c),28+C(B*.5)*99-b*b*b*60-z/2-h,z,(b*b*.3+P((1-(A*A)),7)*.15+.3)*b,b*.7]
      }
      o=A*(2-b)*(80-c*2);
      w=99-C(A)*120-C(b)*(-h-c*4.9)+C(P(1-b,7))*50+c*2;z=o*S(c)+w*C(c)+700;
      return[o*C(c)-w*S(c),B*99-C(P(b, 7))*50-c/3-z/1.35+450,z,(1-b/1.2)*.9+a*.1, P((1-b),20)/4+.05]
    }
  }
  var draw = setInterval('for(i=0;i<1e4;i++)if(s=p(R(),R(),i%46/.74)){z=s[2];x=~~(s[0]*f/z-h);y=~~(s[1]*f/z-h);if(!m[q=y*f+x]|m[q]>z)m[q]=z,a.fillStyle="rgb("+~(s[3]*h)+","+~(s[4]*h)+","+~(s[3]*s[3]*-80)+")",a.fillRect(x,y,1,1)}',0);
  var demo = document.getElementById('demo');
  function redraw(){
    /*
    var d_c = document.createElement("canvas");
    d_c.setAttribute("id","c");
    d_c.setAttribute("width","520");
    d_c.setAttribute("height","500");
    demo.appendChild(d_c);
    */
    draw = setInterval('for(i=0;i<1e4;i++)if(s=p(R(),R(),i%46/.74)){z=s[2];x=~~(s[0]*f/z-h);y=~~(s[1]*f/z-h);if(!m[q=y*f+x]|m[q]>z)m[q]=z,a.fillStyle="rgb("+~(s[3]*h)+","+~(s[4]*h)+","+~(s[3]*s[3]*-80)+")",a.fillRect(x,y,1,1)}',0);
    //alert(d_c);
  }
  function clear_canvas()
  {
    ctx.clearRect(0,0,520,500);
    //canvas.parentNode.removeChild(canvas);  //删除
  }
  function stop_draw(obj){
    clearInterval(obj);
  }
</script>
 </body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
Lua表达式和控制结构学习笔记
Dec 15 Javascript
JavaScript实现列出数组中最长的连续数
Dec 29 Javascript
JavaScript中的原型prototype完全解析
May 10 Javascript
动态加载js、css的简单实现代码
May 26 Javascript
JavaScript登录验证码的实现
Oct 27 Javascript
原生javascript实现的全屏滚动功能示例
Sep 19 Javascript
微信小程序实现图片放大预览功能
Oct 22 Javascript
Vue数据监听方法watch的使用
Mar 28 Javascript
Node.js模块全局安装路径配置方法
May 17 Javascript
基于jquery实现九宫格拼图小游戏
Nov 30 jQuery
Vue.js实现开发购物车功能的方法详解
Feb 22 Javascript
Javascript ParentNode和ChildNode接口原理解析
Mar 16 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
Aug 04 #Javascript
javascript控制图片播放的实现代码
Jul 29 #Javascript
两种JS实现屏蔽鼠标右键的方法
Aug 20 #Javascript
Javascript实现鼠标右键特色菜单
Aug 04 #Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
Aug 04 #Javascript
常用的Javascript数据验证插件
Aug 04 #Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 #Javascript
You might like
浅谈ThinkPHP的URL重写
2014/11/25 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
php的socket编程详解
2016/11/20 PHP
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python多线程爬虫简单示例
2016/03/04 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
python如何统计序列中元素
2020/07/31 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
Python设计密码强度校验程序
2020/07/30 Python
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
阳光体育活动实施方案
2014/05/25 职场文书
公司应聘求职信
2014/06/21 职场文书
广播体操比赛主持词
2015/06/29 职场文书
情感电台广播稿
2015/08/18 职场文书
导游词幽默开场白
2019/06/26 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android