中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript怎么實現字符雨效果

發布時間:2022-06-20 09:20:03 來源:億速云 閱讀:121 作者:iii 欄目:開發技術

今天小編給大家分享一下JavaScript怎么實現字符雨效果的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

具體代碼如下

<html>
    <head>
        <meta charset="utf8"/>
        <title>字符雨</title>
        <style>
            body {
                color:white;
                background-color:black;
                overflow:hidden;
            }
        </style>
    </head>
    <body onresize="init()">
        <div>
        幀率(fps):
        <input id="fpsNum" type="number" min="1" max="35" step="2" value="24" />
        <input id="switchBtn" type="button" value="stop" onclick="switchState()" />
        </div>
        <canvas id="canvas">您的瀏覽器不支持canvas</canvas>
        <script>
            var c = document.getElementById("canvas");
            var fpsNum = document.getElementById("fpsNum");
            var switchBtn = document.getElementById("switchBtn");
            var ctx = c.getContext("2d");

            //動畫是否已經開始
            var isStart = true;
            //循環調用器id
            var intervalId = 0;
            //每次循環繪制一個0.1透明度的蒙版,讓以前繪制的文字留下一段陰影效果
            var clearColor = "rgba(0,0,0,.1)";
            //文字大小
            var fontSize = 20;
            //文字
            var font = fontSize + "px arial";
            //文字顏色
            var fontColor = "#0f0"
            //存儲每列的起始坐標
            var drops = [];

            //重啟程序
            function init() {
                c.width = document.body.offsetWidth;
                c.height = document.body.offsetHeight;
                //文字的列數
                var columns = Math.floor(c.width / fontSize);
                //原來的列數
                var len = drops.length;
                if(len < columns) {
                    for(var i=len; i<columns; i++) {
                        //初始化隨機的列坐標
                        drops.push(Math.floor(Math.random() * c.height));
                    }
                } else {
                    drops.slice(columns, len - columns);
                }
                //如果當前已經正在繪制,則需要先終止繪制再重啟繪制
                if(isStart) {
                    switchState();
                } 
                switchState();
            }

            //繪制
            function draw() {
                ctx.save();
                ctx.translate(c.width, 0);
                ctx.scale(-1, 1);
                ctx.font = font;
                ctx.fillStyle = fontColor;
                drops.map(function(currentValue, index) {
                    //接受一個或多個unicode值,然后返回一個字符串
                    var text = String.fromCharCode(65 + Math.round(Math.random() * 33));
                    //var text = Math.floor(Math.random() * 2);
                    var x = index * fontSize;
                    var y = currentValue * fontSize;
                    ctx.fillText(text, x, y);
                    if(y > c.height * 0.6 && Math.random() > 0.85) {
                        drops[index] = 0;
                    }
                    drops[index]++;
                });
                ctx.restore();

                ctx.fillStyle = clearColor;
                ctx.fillRect(0, 0, c.width, c.height);  
            }

            //切換當前狀態(開始 或 停止)
            function switchState() {    
                isStart = !isStart;
                if(isStart) {
                    switchBtn.value = "stop";
                    intervalId = setInterval(draw, 1000/fpsNum.value);
                } else {
                    switchBtn.value = "start";
                    clearInterval(intervalId);
                }
            }

            init();
        </script>
    </body>
</html>

JavaScript怎么實現字符雨效果

JavaScript怎么實現字符雨效果

以上就是“JavaScript怎么實現字符雨效果”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

聂荣县| 长春市| 眉山市| 霍林郭勒市| 扶绥县| 五原县| 那曲县| 蒙城县| 敦煌市| 修水县| 天镇县| 资兴市| 米脂县| 涿鹿县| 阿拉善左旗| 陆良县| 贡觉县| 大化| 睢宁县| 三亚市| 彩票| 武清区| 乌兰浩特市| 浦北县| 靖西县| 黄冈市| 资溪县| 蒙城县| 拉萨市| 崇义县| 庐江县| 衡水市| 洛扎县| 浮梁县| 格尔木市| 盐津县| 东辽县| 普安县| 旌德县| 崇左市| 德惠市|