雨滴効果を実現する JavaScript キャンバス

雨滴効果を実現する JavaScript キャンバス

この記事では、雨滴効果を実現するためのJavaScriptキャンバスの具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。

まずは効果を確認

見た目はとてもクールですが、実際に雨粒の落下と最後の円を実現しています。

あるいはソースコードを見てください

<!DOCTYPE html>
<html lang="ja">

<ヘッド>
    <メタ文字セット="UTF-8">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>ドキュメント</title>
    <スタイル>
        * {
            マージン: 0;
            パディング: 0;
        }

        体 {
            背景色: #000;
        }
    </スタイル>
</head>

<本文>
    <キャンバス></キャンバス>
    <スクリプト>
        // キャンバスを取得する var canvas = document.querySelector('canvas')
        // ブラシを取得する var ctx = canvas.getContext('2d')
        // CSS を使用してキャンバスのサイズを変更することはできません var ch = canvas.height = window.innerHeight
        var cw = キャンバス.幅 = ウィンドウ.インナー幅
        // 雨滴を放出する var arrRain = []
        // 画面サイズを監視し、それに応じてキャンバスのサイズを変更します。window.onresize = function () {
            ch = キャンバスの高さ = ウィンドウの内側の高さ
            cw = キャンバス.幅 = ウィンドウ.内側の幅
        }
        // ランダムな雨滴を生成するために乱数を取得します。 function randow(min, max) {
            Math.random() * (max - min) + min を返します。
        }
        // コンストラクタ関数 Rain() {

        }
        // rainにプロパティとメソッドを追加します Rain.prototype = {
            // 雨滴が落ちる円の位置と半径を初期化する init: function () {
                this.x = ランダム(0, cw)
                y = 0 です
                // 雨滴が最終的に地面に着地する距離は画面を超えることはできません this.h = randow(0.8 * ch, 0.9 * ch)
                this.r = 1 // 円の開始半径 this.vr = 1 // 半径が大きくなる速度 this.vy = randow(4, 5)

            },
            // 描画メソッドdraw: function() {
                // h未満の場合は雨滴と四角形を描画します if (this.y < this.h) {
                    ctx.beginPath()
                    ctx.fillStyle = '白'
                    ctx.fillRect(this.x, this.y, 4, 10)
                } それ以外 {
                    // 円を描く ctx.beginPath()
                    ctx.strokeStyle = '白'
                    ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI)
                    ctx.ストローク()
                }
            },
            //雨滴の動き move: function () {
                // h より小さい場合は y を追加して雨滴を動かします if (this.y < this.h) {
                    this.y += this.vy
                } それ以外 {
                    // 水しぶきの効果を実現する if (this.r < 70) {
                        this.r += this.vr
                    } それ以外 {
                        // エフェクト終了後に初期化して空から雨滴を生成するので、init関数を呼び出します this.init()
                    }
                }
                this.draw()
            }
        }
        // 雨滴を生成する function createRain(num) {
            (var i = 0; i < num; i++) の場合 {
                // 雨滴を同時にではなくランダムに生成する setTimeout(function () {
                    var rain = 新しい Rain()
                    雨.init()
                    雨.描画()
                    arrRain.push(雨)
                }, 300 * i)
            }
        }
        雨を作る(60)
        setInterval(関数() {
            ctx.beginPath()
            ctx.fillStyle = 'rgba(0,0,0,0.05)'
            ctx.fillRect(0, 0, cw, ch)
            (arrRainのvar k) {
                k.移動()
            }
        }, 1000 / 80)
    </スクリプト>
</本文>

</html>

これらは Raindrops によって実装されたソース コードであり、参考用です。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 雨滴効果を実現する JavaScript キャンバス

<<:  MySQL 結合クエリの原則の知識ポイント

>>:  Linux SSHポートを転送する3つの方法

推薦する

理論の普及——ユーザーエクスペリエンス

1. 概念分析 1: UE ユーザー エクスペリエンス <br />英語ではユーザー エ...

vue3.0 でカルーセル コンポーネントをカプセル化する手順

目次1: カプセル化の考え方2. 包装工程3: ドットインジケーター4: 左と右のインジケーター5:...

Dockerはredis 5.0.7をインストールし、外部構成とデータの問題をマウントします

Redis は、ANSI C で記述されたオープンソースの NoSQL データベースであり、ネットワ...

js でオブジェクトを作成するさまざまな方法とその長所と短所のまとめ

目次初期作成方法ファクトリーパターンコンストラクターパターンコンストラクタパターンの最適化プロトタイ...

vsftp を使用して Linux で FTP サーバーを構築する (パラメータの説明付き)

導入この章では、主に Linux で FTP サーバーを構築するプロセスを紹介します。習得すべき重要...

Linux で同じ内容のファイルを識別する方法の詳細な説明

序文ファイルのコピーによってハードドライブのスペースが大量に浪費され、ファイルを更新するときに混乱が...

HTML チュートリアル: title 属性と alt 属性

XHTML は CSS レイアウトの基礎です。jb51.net は常に XHTML 知識の習得を重視...

Vue における nextTick の役割といくつかの簡単な使用シナリオ

目的nextTickの役割といくつかの簡単な使用シナリオを理解する文章その機能は何ですか?遅延コール...

Linux 構成 SSH パスワードフリーログイン「ssh-keygen」の基本的な使い方

目次1 SSHとは何か2 SSHパスワードフリーログインを設定する2.1 必要なソフトウェアのインス...

MySQLデータ損失のトラブルシューティング事例

目次序文現地調査ケースの再現要約する序文最近、友人が突然WeChatで連絡してきて、MySQLでデー...

一般的な MySQL 関数の例の概要 [集計関数、文字列、数値、時刻と日付の処理など]

この記事では、よく使用される MySQL 関数について説明します。ご参考までに、詳細は以下の通りです...

CSSテーマを簡単に切り替える方法の詳細な説明

最近、個人の Web サイトに非常にシンプルなカラー スキーム (テーマ) スイッチャーを追加しまし...

sed コマンドを使用してファイルの特定の行を効率的に削除する方法

序文通常、ファイル内の特定の行を削除したい場合は、まずファイルを開き、削除する内容を見つけて、これら...

HTMLからReactを実装する方法を教えます

ReactとはReact は、効率的で高速なユーザー インターフェイスを構築するためのシンプルな J...

docker を使用して Kong クラスター操作を構築する

docker コンテナの下に kong クラスターを構築するのは非常に簡単です。公式サイトの紹介も非...