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

推薦する

HTMLページでよく使われるいくつかの小さなメソッド

<Head>タグに追加する<meta http-equiv="pragm...

Flexレイアウトを使用してdiv内のサブ要素を垂直方向に中央揃えする例

1. Flex は Flexible Box の略で、「柔軟なレイアウト」を意味し、ボックス モデル...

Linux CentOS インストール JDK および Tomcat チュートリアル

まずJDKをダウンロードします。ここではjdk-8u181-linux-x64.tar.gzを使用し...

MySQL は重複データを削除して最小の ID ソリューションを維持します

オンラインで検索して重複データを削除し、ID が最小のデータだけを残します。方法は次のとおりです。 ...

tomcat デプロイメント プロジェクトの実装と IDEA との統合

目次Tomcat でプロジェクトを展開する 3 つの方法プロジェクトをwebappsディレクトリに直...

Mysql は null 値の first/last メソッドの例を実装します

序文MySQL が SQL SELECT コマンドと WHERE 句を使用してテーブルからデータを読...

Tomcat の設定と Eclipse での起動方法

目次Tomcat8のインストールと設定方法tomcat ダウンロードTomcat マネージャーを有効...

HTMLの基本概念の詳細な説明

HTMLとは何ですか? HTML は Web ページを記述するために使用される言語です。 •HTML...

HTMLページでチェックボックスを操作する方法

チェックボックスは Web ページで非常によく使用されます。e コマースの Web サイトでもプラッ...

jQueryはドロップダウンメニューのスライド効果を実現します

Web ページを作成するときに、クールでスムーズなドロップダウン メニューが必要になることがあります...

WeChatアプレットはシンプルな手書き署名コンポーネントを実装します

目次背景:必要:効果1. アイデア2. 実装1. ページとスタイル2. 初期化3. クリックすると4...

Linuxグループの基礎知識ポイントまとめ

1. Linuxグループの基本紹介Linux では、すべてのユーザーはグループに所属する必要があり、...

IE8は優れたエクスペリエンスを提供します: アクティビティ

今日は IE8 ベータ 1 (以下、IE8 と略します) をチラ見しました。IE8 は素晴らしい体験...

HTMLページの文字セットを指定する2つの方法

1. HTMLページの文字セットを指定する2つの方法方法1: <メタ文字セット="u...

SQL ROW_NUMBER() および OVER() メソッドのケーススタディ

構文フォーマット: row_number() over(partition by grouping ...