JavaScript キャンバスはマウスの動きに合わせてボールを動かすことを実装します

JavaScript キャンバスはマウスの動きに合わせてボールを動かすことを実装します

この記事の例では、マウスに従ってボールを動かすjsの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

<!DOCTYPE html>
<html>
 <ヘッド>
 <メタ文字セット="utf-8">
 <タイトル></タイトル>
 <スタイル>
 キャンバス{
 境界線: 1px実線 #000;
 }
 </スタイル>
 </head>
 <本文>
 <キャンバスid="mycanvas" 幅="1500" 高さ="800"></キャンバス>
 <スクリプト>
 // キャンバスを作成します var canvas = document.getElementById('mycanvas');
 var ctx = canvas.getContext('2d');
 // ボールクラス関数 Ball(x, y) {
 this.x = x;
 y = y;
 // 初期半径 this.r = parseInt(Math.random() * 50) + 10;
 this.step = parseInt(Math.random() * 5) + 0.1;
 // ランダムな色を設定します this.color = getRandom();
 // ランダムな方向を設定します this.dx = parseInt(Math.random() * 10) - 5;
 this.dy = parseInt(Math.random() * 10) - 5;
 // オブジェクトを配列に読み込みます ballArr.push(this);
 }
 // 配列からオブジェクトを削除します。Ball.prototype.remove = function() {
 (var i = 0; i < ballArr.length; i++) の場合 {
 もし(ballArr[i] == this){
 ボールArr.splice(i, 1);
 }
 }
 }
 // データを更新する Ball.prototype.update = function() {
 // データを更新 this.x += this.dx;
 this.y += this.dy;
 this.r -= this.step;
 // 配列内のボールをクリアする if (this.r <= 0) {
 これを削除してください。
 }
 // 境界を超えた場合、ボールは動き続けます if (this.x < 0) {
 1500 を越える文字列は無視されます。
 this.color = getRandom();
 }
 そうでない場合(this.x > 1500){
 0 を返します。
 this.color = getRandom();
 }
 それ以外の場合 (this.y < 0) {
 y = 800; となります。
 this.color = getRandom();
 }
 そうでない場合(this.y > 800){
 y = 0;
 this.color = getRandom();
 }
 }
 // ボールをレンダリングする Ball.prototype.render = function() {
 ctx.beginPath();
 ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2, false);
 ctx.fillStyle = this.color;
 ctx.fill();
 }
 // キャンバス DOM2 イベント canvas.addEventListener("mousemove", function(event) {
 新しいボール(event.offsetX、event.offsetY);
 });
 var ballArr = [];
 // アニメーションのレンダリングと更新のためのタイマー setInterval(function() {
 // アニメーション ロジック // 画面をクリア - 更新 - レンダリング ctx.clearRect(0, 0, canvas.width, canvas.height);
 // ボールを更新してレンダリングします for (var i = 0; i < ballArr.length; i++) {
 ballArr[i].update();
 もし(ballArr[i]) {
 ballArr[i].render();
 }
 }
 }, 30);
 // ランダムカラー関数 getRandom() {
 var allType = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f";
 var allTypeArr = allType.split(",");
 var color = "#";
 // 色の文字列を連結する for (var i = 0; i < 6; i++) {
 var random = parseInt(Math.random() * allTypeArr.length);
 色 += allTypeArr[ランダム];
 }
 色を返します。
 }
 </スクリプト>
 </本文>
</html>

効果

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

以下もご興味があるかもしれません:
  • JavaScript+canvasでフレーム内のジャンプボールを実現
  • JavaScript と Canvas を組み合わせてスポーツボールを描画する
  • 動くボールを実現するネイティブjs(衝突検出)
  • jsはページの指定された領域でのボールの動きを実現します
  • jsを使用してボールの自由な移動コードを実現する
  • jsはマウスの動きに追従する小さなボールを実現します
  • JavaScript は正弦曲線に沿ったボールの動きを実現します
  • P5.js 入門チュートリアル: ボールアニメーションのサンプルコード
  • 跳ねるボールを実現するネイティブjs
  • ネイティブjsがバウンドボール効果を実現

<<:  innodb_flush_method 値メソッド (例の説明)

>>:  FileZilla_Server:425 データ接続を開けない問題を解決する方法

推薦する

Vueでブラウザ共有機能を呼び出す方法

序文Vue(発音は /vjuː/、view に似ています)は、ユーザーインターフェイスを構築するため...

SQL Server の完全バックアップに関する珍しいエラーと解決策

1. エラーの詳細一度、データベース全体のバックアップを手動で実行したときに、次のエラーが発生しまし...

Ubuntu 18.04 システムでの Redis および phpredis 拡張機能のインストールと設定の詳細な説明

この記事では、Ubuntu 18.04 に Redis と phpredis 拡張機能をインストール...

MySQL データベース データのロード 複数の用途

目次MySQL Load Dataの多様な用途1. LOAD の基本的な背景2. 基本パラメータをロ...

TypeScript での関数オーバーロード

目次1. 関数シグネチャ2. 関数のオーバーロード2.1 オーバーロードされたシグネチャは呼び出し可...

Linux exa コマンド (ls よりも優れたファイル表示エクスペリエンス)

インストールREADMEに従ってインストールしてくださいドキュメントには、exa は Rust で実...

insert と select を組み合わせて、「データベース内のフィールドの最大値 + 1 を挿入する」メソッドを実装する

この記事はmysqlデータベースです質問 1 表 1 のデータを表 2 にインポートします。表 1 ...

WeChatアプレットトラック再生の実装と遭遇した落とし穴の詳細な説明

WeChat アプレットの軌跡再生では、主に線描画操作にポリラインを使用し、車の移動操作にマーカーを...

iframe ページパラメータの文字化けの問題について議論

非常に珍しいパラメータ文字化けの問題に遭遇しました。まずページを見てみましょう写真に示すように、月次...

CSSプリコンパイル言語とその違いの詳細な説明

1. 何ですか マークアップ言語として、CSSは比較的シンプルな構文とユーザーに対する要件が低いが、...

親要素に対する CSS 子要素の固定配置ソリューションの詳細な説明

基本概念絶対配置: 絶対配置に設定された要素ボックスはドキュメント フローから完全に削除され、その包...

Linux で JDK をインストールして環境変数を設定する方法 (この記事で十分です)

目次1. Linuxのビット数を確認する2. JDKをダウンロードする3. JDKをインストールする...

カルーセルカルーセルケースのJS実装

この記事の例では、カルーセルカルーセルを実装するためのJSの具体的なコードを参考までに共有しています...

Dockerを使用してサーバー上で複数のPHPバージョンを実行する

PHP7 がリリースされてからかなり時間が経ちますが、パフォーマンスが大幅に向上したことはよく知られ...

MySQL の文字セット utf8 を utf8mb4 に変更する方法

MySQL 5.5 の場合、文字セットが設定されていない場合、MySQL のデフォルトの文字セットは...