返回顶部
首页 > 资讯 > 精选 >JavaScript中canvas如何实现流星特效
  • 435
分享到

JavaScript中canvas如何实现流星特效

2023-06-15 03:06:37 435人浏览 泡泡鱼
摘要

小编给大家分享一下javascript中canvas如何实现流星特效,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、控制透明度变化函数function easeInQuad(curtime,begin,end,

小编给大家分享一下javascriptcanvas如何实现流星特效,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

1、控制透明度变化函数

function easeInQuad(curtime,begin,end,duration){            let x = curtime/duration; //x值            let y = x*x; //y值            return begin+(end-begin)*y; //套入最初的公式        }        //用平方根构建的缓慢减速运动  核心函数:x*x + 2*xfunction easeOutQuad(curtime,begin,end,duration){            let x = curtime/duration;         //x值            let y = -x*x + 2*x;  //y值            return begin+(end-begin)*y;        //套入最初的公式        }function easeInoutQuad(curtime,begin,end,duration){            if(curtime<duration/2){ //前半段时间                return easeInQuad(curtime,begin,(begin+end)/2,duration/2);//改变量和时间都除以2            }else{                let curtime1 = curtime-duration/2; //注意时间要减去前半段时间                let begin1 = (begin+end)/2;//初始量要加上前半段已经完成的                return easeOutQuad(curtime1,begin1,end,duration/2);//改变量和时间都除以2            }}

2、流星星体光环的闪烁特效

function intervalOpcity (cur=0,start=0.3,end=0.8,dur=3) {            if(fadeOpcity(cur,start,end,dur)===end){                cur = 0                let temp = start                start = end                 end = temp            }            let opcity = fadeOpcity(cur,start,end,dur)            let color = `rgba(0,0,0,${opcity})`            clearBGColor(wrap)            newParticle (wrap,[x,y],r,color)            cur=parseFloat(cur+0.1)            setTimeout(()=>{intervalOpcity (cur,start,end,dur)},33)}

3、流星尾巴

function intervalMove (speed,g=0) {            if(g===720){                g = 360            }            g = g+speed            let nextPosition = movePosition (a,g,startPosition)            x = nextPosition[0]            y = nextPosition[1]            clearBgcolor(wrap1)            for(let i =1;i<=360;i++){                let g1 = g-i/2                if(g1<0&&g<=360){                    break                }                let g1Position = movePosition (a,g1,startPosition)                newParticle (wrap1,[g1Position[0],g1Position[1]],r/(1+i/5),`rgba(255,200,200,0.5)`)            }            setTimeout(()=>{intervalMove (speed,g)},33)        }

4、完整代码

function easeInQuad(curtime,begin,end,duration){            let x = curtime/duration; //x值            let y = x*x; //y值            return begin+(end-begin)*y; //套入最初的公式        }        //用平方根构建的缓慢减速运动  核心函数:x*x + 2*x        function easeOutQuad(curtime,begin,end,duration){            let x = curtime/duration;         //x值            let y = -x*x + 2*x;  //y值            return begin+(end-begin)*y;        //套入最初的公式        }        function easeInoutQuad(curtime,begin,end,duration){            if(curtime<duration/2){ //前半段时间                return easeInQuad(curtime,begin,(begin+end)/2,duration/2);//改变量和时间都除以2            }else{                let curtime1 = curtime-duration/2; //注意时间要减去前半段时间                let begin1 = (begin+end)/2;//初始量要加上前半段已经完成的                return easeOutQuad(curtime1,begin1,end,duration/2);//改变量和时间都除以2            }        }        function newCanvas (width,height) {            let bodyEl = document.body            let canvasEl = document.createElement("canvas")            canvasEl.width = width            canvasEl.height = height            canvasEl.style.position = "absolute"            bodyEl.append(canvasEl)            let wrap = canvasEl.getContext("2d")            return wrap        }        function setBgcolor (wrap,color) {            wrap.fillStyle=color;            wrap.fillRect(0,0,wrap.canvas.width,wrap.canvas.height);        }        function clearBgcolor(wrap){            wrap.clearRect(0,0,wrap.canvas.width,wrap.canvas.height)        }         function newParticle (wrap,position,r,color) {            let x = position[0]            let y = position[1]            wrap.fillStyle=color;            wrap.beginPath();            wrap.arc(x,y,r,0,2*Math.PI);            wrap.shadowBlur=20;            wrap.shadowColor=`rgba(255,255,255,0.8)`;            wrap.fill();        }        function fadeOpcity(cur,start,end,dur){            let opcity = parseFloat(easeInoutQuad(cur,start,end,dur).toFixed(2))             return opcity        }       let wrap0 = newCanvas (1000,800)       let wrap2 = newCanvas (1000,800)       let wrap = newCanvas (1000,800)       let wrap1 = newCanvas (1000,800)               setBgcolor (wrap0,"black")        setBgcolor (wrap,"rgba(0,0,0,0)")        setBgcolor (wrap1,"rgba(0,0,0,0)")        setBgcolor (wrap2,"rgba(0,0,0,0)")        let startPosition = [500,200]        let r = 10        let a = -200        let x =  a*(1-Math.cos(0))*Math.sin(0)+startPosition[0]        let y = a*(1-Math.cos(0))*Math.cos(0)+startPosition[1]        function movePosition (a,g,startPosition) {            let t = Math.PI*2/360            let x = a*(1-Math.cos(g*t))*Math.sin(g*t)+startPosition[0]            let y = a*(1-Math.cos(g*t))*Math.cos(g*t)+startPosition[1]            return [x,y]        }        function intervalMove (speed,g=0) {            if(g===720){                g = 360            }            g = g+speed            let nextPosition = movePosition (a,g,startPosition)            x = nextPosition[0]            y = nextPosition[1]            clearBgcolor(wrap1)            for(let i =1;i<=360;i++){                let g1 = g-i/2                if(g1<0&&g<=360){                    break                }                let g1Position = movePosition (a,g1,startPosition)                newParticle (wrap1,[g1Position[0],g1Position[1]],r/(1+i/5),`rgba(255,200,200,0.5)`)            }            setTimeout(()=>{intervalMove (speed,g)},33)        }        function intervalOpcity (cur=0,start=0.3,end=0.8,dur=3) {            if(fadeOpcity(cur,start,end,dur)===end){                cur = 0                let temp = start                start = end                 end = temp            }            let opcity = fadeOpcity(cur,start,end,dur)            let color = `rgba(0,0,0,${opcity})`            clearBgcolor(wrap)            newParticle (wrap,[x,y],r,color)            cur=parseFloat(cur+0.1)            setTimeout(()=>{intervalOpcity (cur,start,end,dur)},33)        }intervalOpcity ()intervalMove (1)

JavaScript可以做什么

1.可以使网页具有交互性,例如响应用户点击,给用户提供更好的体验。2.可以处理表单,检验用户的输入,并提供及时反馈节省用户时间。3.可以根据用户的操作,动态的创建页面。4使用JavaScript可以通过设置cookie存储在浏览器上的一些临时信息。

看完了这篇文章,相信你对“JavaScript中canvas如何实现流星特效”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: JavaScript中canvas如何实现流星特效

本文链接: https://lsjlt.com/news/277461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript中canvas如何实现流星特效
    小编给大家分享一下JavaScript中canvas如何实现流星特效,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、控制透明度变化函数function easeInQuad(curtime,begin,end,...
    99+
    2023-06-15
  • JavaScript canvas实现流星特效
    本文实例为大家分享了JavaScript canvas实现流星特效展示的具体代码,供大家参考,具体内容如下 1、控制透明度变化函数 function easeInQuad(cur...
    99+
    2024-04-02
  • JavaScript如何实现流星雨效果
    这篇文章主要介绍“JavaScript如何实现流星雨效果”,在日常操作中,相信很多人在JavaScript如何实现流星雨效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript如何实现流星雨效果...
    99+
    2023-07-02
  • JavaScript+Canvas实现文字粒子流特效
    目录动手前思考绘制文字获取像素点位渲染粒子简单的动画效果1、随机选择四个方向中的某一个方向,生成初始坐标2、从初始位置运动到实际位置3、点击文字炸开的特效动手前思考 首先要在特定的位...
    99+
    2023-01-14
    JavaScript Canvas文字粒子流特效 JavaScript Canvas粒子流 JavaScript Canvas
  • JavaScript+Canvas实现酷炫的粒子和流星效果
    目录一:粒子效果二:流星效果一:粒子效果 <html> <head> <meta charset="utf-8"> <title&...
    99+
    2023-01-31
    JavaScript实现粒子效果 JavaScript实现流星效果 JavaScript 粒子 JavaScript 流星
  • JavaScript利用canvas绘制流星雨效果
    目录前言需求分析实现过程1.绘制满天繁星2.满天繁星闪起来3.绘制流星4.流星划过夜空5.流星雨6.merge视觉盛宴前言 最近总是梦见一些小时候的故事,印象最深刻的就是夏天坐在屋顶...
    99+
    2022-11-13
    JavaScript canvas绘制流星雨 JavaScript canvas 流星雨 JavaScript 流星雨
  • javascript中canvas如何实现雨滴效果
    这篇文章将为大家详细讲解有关javascript中canvas如何实现雨滴效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文实例为大家分享了javascript canvas实现雨滴效果的具体代码,供...
    99+
    2023-06-15
  • HTML5中canvas如何实现雪花飘落特效
    这篇文章给大家分享的是有关HTML5中canvas如何实现雪花飘落特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最终效果图如下: 图1一、需求分析圆形雪花本示例中雪花形状使用圆形雪花数量固定根据图1...
    99+
    2023-06-09
  • JavaScript利用canvas实现鼠标跟随特效
    目录前言创建canvas画布定义鼠标 x / y初始化canvas画箭头循环动画鼠标事件前言 canvas是一个很神奇的玩意儿,比如画表格、画海报图都要用canvas去做,前几天有用...
    99+
    2022-11-13
    JavaScript canvas鼠标跟随特效 JavaScript canvas鼠标跟随 JavaScript 鼠标跟随
  • C语言如何实现流星雨效果
    小编给大家分享一下C语言如何实现流星雨效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!上次忘记说了,因为我们是用C语言写的所以是控制台程序,创造不出来界面,那怎...
    99+
    2023-06-25
  • JavaScript实现流星雨效果的示例代码
    目录演示技术栈源码首先建立星星对象让星星闪亮起来创建流星雨对象让流星动起来演示 上一次做了一个雨滴的动画,顺着这种思维正好可以改成流星雨,嘿嘿我真是一个小机灵。 技术栈 还是先建立...
    99+
    2024-04-02
  • javascript如何实现哪些特效
    这篇文章主要介绍javascript如何实现哪些特效,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! javascript能做的特效有:1、轮播图;2、表单...
    99+
    2024-04-02
  • JavaScript如何实现时钟特效
    这篇“JavaScript如何实现时钟特效”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript如何实现时钟特效...
    99+
    2023-07-02
  • html5如何实现炫丽的流星雨效果
    这篇文章给大家分享的是有关html5如何实现炫丽的流星雨效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 代码如下: function Smearing($object...
    99+
    2024-04-02
  • JavaScript+CSS如何实现相册特效
    这篇文章给大家分享的是有关JavaScript+CSS如何实现相册特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。嗯 就是这样一个例子,视频学到的一个特效,实际用处并不大,但是...
    99+
    2024-04-02
  • javascript canvas实现雨滴效果
    本文实例为大家分享了javascript canvas实现雨滴效果的具体代码,供大家参考,具体内容如下 先看效果 看起来很炫酷,其实就是实现了雨滴的掉落还有最后的圆 还是看源码 ...
    99+
    2024-04-02
  • C语言实现流星雨效果流程
    目录一、头文件二、结构体三、初始化四、绘制函数五、移动函数六、界面设计七、主函数总结视频讲解感谢序 再亮眼的流星,也会一闪而过。 嗨!这里是狐狸~~ 没错,我又来了,上次的“烟花”表...
    99+
    2024-04-02
  • 如何使用HTML5实现炫丽的流星雨效果
    这期内容当中小编将会给大家带来有关如何使用HTML5实现炫丽的流星雨效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 徐家破镜昏如雾。半面...
    99+
    2024-04-02
  • 怎么在JavaScript中使用canvas实现一个随机粒子特效
    本篇文章给大家分享的是有关怎么在JavaScript中使用canvas实现一个随机粒子特效,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java的特点有哪些Java的特点有哪些...
    99+
    2023-06-14
  • CSS3怎么实现流星雨效果
    小编给大家分享一下CSS3怎么实现流星雨效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!说明:正文只讲述单个流星雨的实现方式,多个的效果只需要对单个的动画起始点...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作