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 実践における実用的な小さな魔法のまとめ

初回の読み込みを高速化できるルートの遅延読み込みをどうして忘れられるでしょうか?ルーティングの遅延読...

MySQLの詳細な説明Explain

日常業務では、実行に時間のかかる SQL ステートメントを記録するために、スロー クエリを実行するこ...

Vueは下部のポップアップウィンドウで複数選択を実装します

この記事の例では、下部のポップアップウィンドウで複数選択を実装するためのVueの具体的なコードを共有...

JavaScript の絶妙なスネーク実装プロセス

目次1. HTML構造を作成する2. テーブルを作成する3. ヘビの頭と体を作る4. 食べ物を作る5...

現在のマウススライドの座標を取得するVue+openlayer5メソッド

序文: Vue プロジェクトで現在のマウスの座標を取得するにはどうすればよいでしょうか。ここで共有す...

ウェブページのカラーマッチングスキルについての簡単な説明(フロントエンド開発者必読)

一般的に、Web ページの背景色は、より柔らかく、よりシンプルで、より明るく、暗いテキストとマッチし...

Vueカスタムテーブル列実装プロセス記録

目次序文レンダリングsetTable コンポーネント使用結論序文フォームを使用して PC 側のプロジ...

流星効果を実現する JavaScript キャンバス

この記事では、JavaScriptキャンバスで流星の特殊効果を表示するための具体的なコードを参考まで...

js 属性オブジェクトの hasOwnProperty メソッドの使用

オブジェクトの hasOwnProperty() メソッドは、オブジェクトに特定の独自の (継承され...

20個のJavaScriptワンラインコードを共有する

目次1. ブラウザのクッキーの値を取得する2. RGBを16進数に変換する3. クリップボードにコピ...

MySQL データ圧縮パフォーマンス比較の詳細

目次1. テスト環境1.1 ハードウェアとソフトウェア1.2 テーブル構造2. テストの目的2.1 ...

XHTML 2.0 新機能プレビュー

<br />ブラウザが次世代のXHTMLを処理できるようになる前に、このよりリッチなコン...

仮想マシンUbuntu 16.04がインターネットに接続できない問題の解決策

Ubuntu をインストールしたばかりですが、開いたときにネットワーク接続がありませんでした。右上隅...

HTML フォームタグチュートリアル (2):

このチュートリアルでは、ウェブデザインにおけるFORMフォームタグのさまざまな属性の応用を紹介します...

ネイティブ JavaScript を使用して計算機のサンプル コードを開発する

計算機の主な機能は数値計算を実行することです。計算機機能の Web インスタンスを開発すると、js ...