canvas弹跳球----源码分享与知识点总结

html部分

    <h1>bouncing balls</h1>
    <canvas></canvas>

css部分

html, body {
  margin: 0;
}
body {
  overflow: hidden;//
  height: inherit;//这两句很重要,是宽高100%的重要因素之一
}
h1 {
  font-size: 2rem;
  letter-spacing: -1px;
  position: absolute;
  margin: 0;
  top: -4px;
  right: 5px;
  color: transparent;
  text-shadow: 0 0 4px white;
}

js部分:

var canvas = document.querySelector(‘canvas‘);
var ctx = canvas.getContext(‘2d‘);
var width = canvas.width = window.innerWidth;
var height = canvas.height = window.innerHeight;//这两句也是宽高100%的重要因素之一
var balls=[];

// 随机数函数
function random(min,max) {
    var num = Math.floor(Math.random()*(max-min)) + min;
    return num;
}

//Ball构造器
function Ball(x,y,vX,vY,color,size){
    this.x=x;
    this.y=y;
    this.vX=vX;
    this.vY=vY;
    this.color=color;
    this.size=size;
}
Ball.prototype.init=function(){
    ctx.beginPath();
    ctx.fillStyle=this.color;
    ctx.arc(this.x,this.y,this.size,0,2*Math.PI);
    ctx.fill();
}
Ball.prototype.update=function(){
    if(this.x+this.size>=width||this.x-this.size<=0){
        this.vX=-this.vX;
    this.color=‘rgb(‘+random(0,255)+‘,‘+random(0,255)+‘,‘+random(0,255)+‘)‘;
    }
    if(this.y+this.size>=height||this.y-this.size<=0){
        this.vY=-this.vY;
        this.color=‘rgb(‘+random(0,255)+‘,‘+random(0,255)+‘,‘+random(0,255)+‘)‘;
    }
    this.x+=this.vX;
    this.y+=this.vY;
}

//用来循环调用的函数
function fool(){
    //这两句很重要!!!!!
    //每次调用这个函数就重新对整个canvas容器填充一次,不然上一帧留下的球是不会消失的
    //而且rgba最后一个透明度用0.25效果超级好!
    //每次覆盖涂色透明度0.25,不会把上一帧的图完全覆盖,4个帧之内有一种渐变得效果
    ctx.fillStyle = ‘rgba(0, 0, 0, 0.25)‘;
    ctx.fillRect(0, 0, width, height);

    //产生随机参数小球
    while(balls.length<30){
        var ball=new Ball(random(20,width-20),
            random(20,height-20),
            random(-10,10),
            random(-10,10),
            ‘rgb(‘+random(0,255)+‘,‘+random(0,255)+‘,‘+random(0,255)+‘)‘,
            random(10,20));
        balls.push(ball);
    }

    //对所有小球执行函数
    for(var i=0;i<balls.length;i++){
        balls[i].init();
        balls[i].update();
    }
// requestAnimationFrame(fool());//这个是比setInterval()性能更好的一种解决方案,但是兼容性还不够好
}

setInterval("fool()",20);
时间: 2024-10-21 07:08:03

canvas弹跳球----源码分享与知识点总结的相关文章

3D语音天气球(源码分享)——通过天气服务动态创建3D球

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3D语音天气球(源码分享)--创建可旋转的3D球 二:通过天气服务,从网络获取时实天气信息并动态生成"3D球" 三:Android语音服务和Unity的消息传递 四:Unity3D端和Android端的结合 关于项目的详细介绍和3D球的创建请看上面第一篇文章(重要) 今天主要讲解如何通过获取

3D语音天气球(源码分享)——完结篇

开篇废话: 由于这篇文章是本系列最后一篇,有必要进行简单的回顾和思路整理. 这个程序是由两部分组成,Android端和Unity端: 1.Unity端负责3D球的创建,显示和旋转:3D语音天气球(源码分享)--创建可旋转的3D球 2.通过天气服务动态创建3D球:3D语音天气球(源码分享)--通过天气服务动态创建3D球 3.Android端使用第三方的语音服务来进行语音识别:3D语音天气球(源码分享)--在Unity中使用Android语音服务 4.Unity中加入Android项目:Unity中

Android开发之自己定义TabHost文字及背景(源码分享)

使用TabHost 能够在一个屏幕间进行不同版面的切换,而系统自带的tabhost界面较为朴素,我们应该怎样进行自己定义改动优化呢 MainActivity的源码 package com.dream.ledong; import android.app.TabActivity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.view.Gr

推荐!Html5精品效果源码分享

一直在看别人的汇总,看到了一些不错的关于 HTML5内容的源码,我也汇总下分享出来,好东西需要共享!希望可以帮到需要的朋友. 1.劲爆分享:HTML5动感的火焰燃烧动画特效 这又是一款基于HTML5的超炫动画特效,是一款动感的火焰燃烧动画效果.这款HTML5动画火焰燃烧非常逼真,之前我们也分享过一些其他的HTML5火焰燃烧动画,比如:HTML5 Canvas火焰燃烧动画和纯CSS3实现打火机火焰动画.一般像这样的HTML5动画都是基于Canvas的,今天的这款也不例外.源码下载地址:劲爆分享:H

JEECG社区 一个微信教育网站案例源码分享

微信教育网站案例演示: http://t.cn/RvPgLcb 源码分享: http://pan.baidu.com/s/1cUImy 截图演示: JEECG社区 一个微信教育网站案例源码分享,布布扣,bubuko.com

仿乐享微信源码分享,把你的生意做到微信里

99%的人不知道的微信秘密!微信里的商机.仿乐享微信源码分享,把你的生意做到微信里. WeiKuCMS  (微酷CMS)功能特点:人工客服新功能正式上线!粉丝行为分析.渠道二维码生成.二维码折扣,微菜单,微统计,会员卡签到,微会员,刮刮卡,大转盘,优惠券,积分兑换,微官网,砸金蛋,微调研,微投票,微相册,微商城,微团购,微留言,微喜帖,商家入驻,微门店,微餐饮,微酒店,微教育,微物业,微医疗,微信墙,微花店,微美容,微生活. 微信公共账号轻松接入,无限自定义图文回复.欢迎您的加入! 微酷WeiK

AppCan 移动应用开发项目源码分享:嗡嗡旅游App开发

开发者介绍:老家湖北巴东好山好水,神农溪.巴人河.三里城等都是旅游好去处.中秋节回了趟老家,看到家乡的原生态景色吸引了大批游客,由此萌发了想法:用移动技术开发一个App试水,把家乡景点介绍给更多的人.于是,耗时一个月的<嗡嗡旅游>应运而生,特此将项目源码分享给广大AppCan开发者. 项目实现功能 用户注册.登录,游记查看和发布,查看辖区内景区.酒店.交通.攻略等信息,内容收藏.评论和分享,查看地图,景区门票.酒店电话预定等. 项目使用插件 引导页 引导页3张图片采用的是全屏显示的slider

干货分享——android源码分享网站

干货分享--android源码分享网站 android源码应用分享站点,各种技术分支的源码都有,现在分享给大家 安卓源码服务专家 集合了大量的例子源码,总会找到你想要的 http://www.javaapk.com/ 泡在网上的日子 实时分享android最新的开源项目,大量的教程 http://www.jcodecraeer.com/ android的code4app--apkbus 大量的例子源码和android开发文档 http://d.apkbus.com/ 安卓巴士 http://ww

Android项目源码分享

http://blog.csdn.net/gao_chun/article/details/47263063 Android项目源码分享 给大家分享几个Android开发项目源码,大部分功能相信可以在实战项目中直接使用,供大家下载学习,大部分项目是基于 Android Studio开发,IDE为Eclipse的童鞋可通过网上教程自行转换,这里就不多说了.有句话说,不贴墙纸的装修都是耍流氓,无源码无效果图的文章也算是耍流氓, ,那就直接上图吧.最近在整理GitHub,打算把一些以前做过的项目中部分