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 相关文章推荐
如何用javascript判断录入的日期是否合法
Jan 08 Javascript
如何使用Javascript获取距今n天前的日期
Jul 08 Javascript
基于jquery实现的文字淡入淡出效果
Nov 14 Javascript
JS实现的表格行鼠标点击高亮效果代码
Nov 27 Javascript
JS函数的几种定义方式分析
Dec 17 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
Jul 26 Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 Javascript
Angular2学习教程之组件中的DOM操作详解
May 28 Javascript
vue2.0 常用的 UI 库实例讲解
Dec 12 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
Oct 30 Javascript
JS Thunk 函数的含义和用法实例总结
Apr 08 Javascript
Vue实现穿梭框效果
Sep 30 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
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
JavaScript对象模型-执行模型
2008/04/28 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
Python中for循环和while循环的基本使用方法
2015/08/21 Python
详解python开发环境搭建
2016/12/16 Python
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
大学生自我鉴定评语
2014/01/27 职场文书
水果超市创业计划书
2014/01/27 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
关于环保的活动方案
2014/08/25 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
办公室文员岗位职责
2015/02/04 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS