躁动的小球特效

原生js制作(es6)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #myCanvas{
                border: 1px solid red;
            }
        </style>
    </head>
    <body>
        <canvas id="myCanvas" width="500" height="300"></canvas>

        <script>

            var rand = (min,max) => parseInt(Math.random()*(max-min)+min);

            var myCanvas = document.querySelector(‘#myCanvas‘);
            var ctx = myCanvas.getContext(‘2d‘);

            const canvasWidth = myCanvas.width;
            const canvasHeigh = myCanvas.height;

            class Ball{
                constructor(ctx,canvasWidth,canvasHeigh){
                    this.ctx = ctx;
                    // 颜色
                    this.color = `rgb(${rand(1,256)},${rand(1,256)},${rand(1,256)})`;
                    // 半径
                    var r = rand(2,10);
                    this.r = r;
                    // 坐标
                    this.x = rand(r,canvasWidth-r);
                    this.y = rand(r,canvasHeigh-r);
                    // 可移动的峰值
                    this.maxWidth = canvasWidth - r;
                    this.maxHeight = canvasHeigh - r;
                    // 速度
                    var speedX = rand(1,3);
                    this.speedX = rand(0,2) > 0 ? speedX : -speedX;
                    var speedY = rand(1,3);
                    this.speedY = rand(0,2) > 0 ? speedY : -speedY;
                }
                draw(){
                    this.ctx.beginPath();
                    this.ctx.fillStyle = this.color;
                    this.ctx.arc(this.x,this.y,this.r,0,Math.PI*2,true);
                    this.ctx.closePath();
                    this.ctx.fill();
                }
                move(){
                    this.x += this.speedX;
                    if(this.x >= this.maxWidth){
                        this.speedX *= -1;
                    }else if(this.x < this.r){
                        this.speedX *= -1;
                    }

                    this.y += this.speedY;
                    if(this.y >= this.maxHeight){
                        this.speedY *= -1;
                    }else if(this.y < this.r){
                        this.speedY *= -1;
                    }
                }
            }

            var balls = [];
            for(let i=0;i<100;i++){
                var ball = new Ball(ctx,canvasWidth,canvasHeigh);
                balls.push(ball);
            }

            setInterval(function(){
                ctx.clearRect(0,0,canvasWidth,canvasHeigh)
                for(let key in balls){
                    var ball = balls[key];
                    ball.draw();
                    ball.move();
                }
            },30)

        </script>

    </body>
</html>
时间: 2024-09-14 10:57:14

躁动的小球特效的相关文章

如何用面对对象来做一个躁动的小球?

今天来看看怎样用面对对象来做一个躁动的小球. 首先我们先创建一个对象,他的属性包含小球的随机水平.纵向坐标,随机宽.高,随机颜色,以及创建小球的方法. html: <div id="wrap"></div> js: function Boll(x,y,w,h,color){ // 随机宽高 var wh = randFn(5, 40); // 随机颜色 var c = 'rgb('+randFn(0, 255)+',' + randFn(0,255)+','+r

本周推荐7款CSS3实现的动态特效

大家都知道,在网页制作时使用CSS技术,可以有效地对页面的布局.字体.颜色.背景和其它效果实现更加精确的控制.只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和格式.CSS3是CSS技术的升级版本,CSS3语言开发是朝着模块化发展的.本周极客社区本周推荐7款CSS3实现的动态特效.希望对大家有所帮助! 相关阅读: 推荐9款使用CSS3实现的超酷动画效果 10款重量级CSS3的全新特效 CSS3实现的全屏幕覆盖层效果 在线演示 一个使用CSS3生成的超酷幻灯

HTML5 Canvas彩色小球碰撞运动特效

脚本简介 HTML5 Canvas彩色小球碰撞运动特效是一款基于canvas加面向对象制作的运动小球动画特效. 效果展示 http://hovertree.com/texiao/html5/39/ 效果图如下: 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>HTML5 Canvas彩色小球碰撞运动特效

js炫酷小球沿着直线跑动导航条特效源码分享

在线预览特效地址: http://www.zuidaima.com/html/2251669926857728/index.html 最近一直在做企业的网站,今天分享一个前端的demo主要想分享的就是js. 主要的效果,先上图吧.如下: 哈~ 盗了一下最代码的logo,大牛不要怪罪我啊. 这里因为没有部署到网上,我就描述一下主要的动画效果吧! 第一个效果:里面有个小球的 会沿着红色的线条跑,遇到圆就会绕一圈然后接着跑直线,遇到圆又绕着圆跑,直到把直线都跑完为止,然后重新开始跑,这是第一个动画效果

HTML5CSS3特效-上下跳动的小球-遁地龙卷风

(-1)写在前面 我用的是chrome49,这个idea是我在stackoverflow上回答问题时看到了,多谢这位同行,加深了我对很多技术点的理解,最近刚到北京,忙碌了一两天,在后续的日子里,会被安排面试,学习计划只能按工作流走了,做完这个要看一个特别酷的效果,好激动! (0)效果演示 (1)实现方案 动画效果都是用animation做的 (2)知识点详解 a. border-radius:40px; 当div的长高都是80px的时候,div是一个圆形,其实长高都是60px的时候也是圆型,同理

Android特效专辑(六)——仿QQ聊天撒花特效,无形装逼,最为致命

Android特效专辑(六)--仿QQ聊天撒花特效,无形装逼,最为致命 我的关于特效的专辑已经在CSDN上申请了一个专栏--http://blog.csdn.net/column/details/liuguilin.html 日后我所写的特效专辑也会以一添加在这个专栏上,今天写的这个特效,是关于聊天的,你肯定遇到过,就是你跟人家聊天的时候,比如发送应(么么哒),然后屏幕上全部就是表情了,今天我们就是做这个,撒花的特效,国际惯例,上图 截图 实现这样的效果,你要知道贝塞尔曲线,何谓贝塞尔曲线?其实

【OpenGL】Shader实例分析(六)- 卡牌特效

转发请保持地址:http://blog.csdn.net/stalendp/article/details/30989295 本文将介绍怎么通过alpha通道来隐藏信息,并实现卡牌特效.运行效果如下: 代码如下: Shader "stalendp/imageShine" { Properties { _MainTex ("image", 2D) = "white" {} _NoiseTex("noise", 2D) = &qu

时钟特效程序

做了个特效小程序,在过程中发现自己在学过的知识中有掌握的不够牢固的,今天在这里复习一下: 一.三目运算符中能否使用{}吗? 不可以,三目运算符的语法:条件 ? 结果1 : 结果2; 结果不可以用语句代替 二.canvas可以嵌套吗? 不可以, 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title><

10款功能强大的jQuery/CSS3图片特效插件

1.CSS3实现的底部带滚动云彩效果的网站登录页面 CSS3实现的底部带滚动云彩效果的网站登录页面特效源码,是一段实现页面底部拥有滚动云彩动态效果的特效源码,想要在网站中实现此类效果的朋友们可以前来下载使用.本段代码兼容目前最新的各类主流浏览器,是一款非常优秀的特效源码. 在线演示 源码下载 2.HTML5实现的3D球体斑点运动动画特效源码 这是一个很酷的HTML5 3D动画效果,是一个小球,小球表面出现跳动的斑点,斑点跳动时形成各种各样的形状,其实这款动画并不是正宗的HTML5 3D动画,而是