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 データ接続を開けない問題を解決する方法

推薦する

Linux で ss コマンドと zabbix を組み合わせてソケットを監視する方法の詳細な説明

目次序文1. ssコマンド2. Zabbix監視マシンの全体的なソケットステータス2.1. スクリプ...

Linux の crw、brw、lrw などのファイル属性は何ですか?

ファイルとは何ですか?すべてのファイルは実際には文字列のストリームですが、適切な解析方法を使用すると...

フォーム OnSubmit と input type=image の使用の概要

ここに <input type="image"> がある場合、この画...

Ajax は CORS レスポンス ヘッダーを設定してクロスドメインの問題を解決し、クロスドメインのケース スタディを実現します。

1. クロスドメインを実現するためにCORSレスポンスヘッダーを設定するクロスオリジンリソース共有...

Vuexの特性と機能の詳細な説明

目次Vuex とは何ですか? Vuexの5つの特性vuex の State 機能とは何ですか? vu...

Vueは水平の斜めの棒グラフを実装します

この記事では、水平傾斜棒グラフを実装するためのVueの具体的なコードを参考までに共有します。具体的な...

Dockerを使用してphabricatorをインストールする方法

ここでは Ubuntu 16.04 システムを使用しています。 dockerを使用したインストールh...

JavaScript の基礎: 即時実行関数

目次関数フォーマットを即時実行関数を即座に実行する他の方法 – 式即時実行される関数はパラメータを取...

Linux で SVN サーバーをインストールする方法

1. Yumのインストール yum でサブバージョンをインストール 2. 構成1. 倉庫を作る/ho...

Idea で Docker を使用して SpringBoot プロジェクトをデプロイする詳細な手順

序文プロジェクト要件: Dockeridea に Docker プラグインをインストールし、Dock...

モバイル開発におけるHTML5開発の現状を深く理解する

「私たちは次の一連のモバイル製品を HTML5 で作成しています。」 「ええ、最近は多くの人が Ap...

HTML テーブル_Powernode Java アカデミー

HTMLで表を描くには、表タグを使用します。 trは行を意味しますtdは列を示すth はテーブ...

Windows システム mysql5.7.18 インストール グラフィック チュートリアル

Windows システム向け MySQL インストール チュートリアルダウンロード1. https:...

vuex名前空間の使用

目次Vuex は単一の状態ツリーを使用するため、すべてのアプリケーション状態が比較的大きなオブジェク...

LinuxでLVMディスクを拡張する詳細な手順

1.ハードディスクを追加する2. パーティションの状態を確認します: fdisk -l 3. パーテ...