JSはカード配布アニメーションを実現します

JSはカード配布アニメーションを実現します

この記事の例では、カード配布アニメーションを実装するためのJSの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

まずはデモをご覧ください

ゲームビルドの準備

1. 52枚のカードを用意する
2. テーブルクロス
3. 編集ツールはVisual Codeです

技術概要

1. オブジェクト操作
2. データ操作
3.JSアニメーション
4. グローバル変数

関数 desen_x(){
 that = this とする;
 var desen=["h_1","h_2","h_3","h_4","h_5","h_6","h_7","h_8",
 「h_9」、「h_10」、「h_11」、「h_12」、「h_13」、「p_1」、「p_2」、「p_3」、「p_4」
 ,"p_5","p_6","p_7","p_8","p_9","p_10","p_11","p_12","p_13"
 ,"t_1","t_2","t_3","t_4","t_5","t_6","t_7","t_8","t_9","t_10"
 ,"t_11","t_12","t_13","x_1","x_2","x_3","x_4","x_5","x_6","x_7"
 ,"x_8","x_9","x_10","x_11","x_12","x_13"];
 //ポーカーのプレフィックス名をすべて配列に格納します var Obj = new Object(); //新しいオブジェクトを作成します var array=[]; //空の配列 for(var i=0;i<4;i++){ //ゲームデモでは4枚のポーカーカードだけが必要なので、<4のみ 
   var x=Math.round(Math.random()*52);//乱数を52で丸めた値
   Obj[i]=x; //グローバル変数に格納します。そうでない場合は、一度に格納できる値は 1 つだけです}
 console.log(Obj);//オブジェクトを出力して、4つのオブジェクトがあるかどうかを確認します。window.array=[desen[Obj[0]],desen[Obj[1]],desen[Obj[2]],desen[Obj[3]]];
 // 保存した配列をポーカーグローバルに持ち込む }
function send_poker(){ //このメソッドはカード配布イベントです console.log(window.array);
 // グローバル変数が正常かどうかをテストし、渡されたグローバル変数を temp[] に取り込みます
 var temp=[ウィンドウ配列[0],ウィンドウ配列[1],ウィンドウ配列[2],ウィンドウ配列[3]];
 var ti = 0;
 var iamges="../poker/"+temp+".png"; //これは画像のデフォルトパス+あなたのデザインです
 var Creator = document.getElementById("d_back"); // 操作の DOM 親要素を取得します。 var po_1 = document.createElement("div"); // div の仮想生成
 var num = 0; // 変数を初期化します //po_1.src="../h_1.png";
 //img_1.scr="../images/poker/h_1.png";
 
 for(var i=0;i<temp.length;i++){//ループ temp
  var _this_ は、次のようになります。
  var img_1 = document.createElement("img");
  img_1.src+="./images/poker/"+temp[i]+".png"; //作成されたimgに変数パスを割り当てます console.log("when it is equal to 0");
  var 10 = 10;
  img_1.className="poker_float";//デフォルトの初期ディーリングポジションとなるクラスを割り当てます。creator.appendChild(img_1);//オブジェクトを生成します//"../images/poker/"+temp.i+".png";
  
 }

 
  move_poker(); //このメソッドは自己カプセル化されたアニメーションです}

アニメーションイベント

function move_poker(){ //ポーカーを移動します var node = document.getElementById("d_back").childNodes; //親要素の下にあるすべての子ノードを取得します console.log(node); //その数を出力します var n5=node[9]; //操作するimgオブジェクトクラスを9として操作を開始します var n6=node[10];
 var n7 =ノード[11];
 var n8 =ノード[12];
 var popo = anime({//アニメーションは最後に表示されます。targets: n5, //操作対象オブジェクト translateX:-150, //移動する水平位置 translateY: -250, //移動する垂直位置 easing: 'easeInOutQuad', //イージング、CSSメカニズムに変更はありません。duration:100, //完了時間 });
  var popo1 = アニメ({
  ターゲット: n6、
  翻訳X:-100,
  翻訳Y: -250,
  イージング: 'easeInOutQuad',
  期間:200,
  });
  var popo2 = アニメ({
  ターゲット: n7、
  翻訳X:-50,
  翻訳Y: -250,
  イージング: 'easeInOutQuad',
  期間:300,
  });
  var popo3 = アニメ({
  ターゲット: n8、
  翻訳X:0,
  翻訳Y: -250,
  イージング: 'easeInOutQuad',
  期間:400,
  });
}
function gui(){ //GUI は、次のカード配布を容易にするためにすべてのノードをリセットします。var node = document.getElementById("d_back").childNodes;
 var n5 =ノード[9];
 var n6 =ノード[10];
 var n7 =ノード[11];
 var n8 =ノード[12];
 var popo4 = アニメ({
  ターゲット: [n5,n6,n7,n8],
  翻訳X:0,
  翻訳Y: 0,
 })
 popo4 の子ノードを削除します。
}

アニメーションパッケージ

function setAnimationsProgress(insTime) { //このメソッドに複数のDOMがある場合は、XOR非同期スレッドモードを実行します。var i = 0;
 var アニメーション = instance.animations;
 var アニメーションの長さ = アニメーションの長さ; 
 (i < アニメーションの長さ) { 
  var anim = アニメーション[i];
  var アニメーション = anim.animatable;
  var tweens = anim.tweens;
  var tweenLength = tweens.length - 1;
  var tween = tweens[tweenLength];
  if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; } 
  var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;
  var easier = isNaN(elapsed) ? 1 : tween.easing(elapsed);
  var 文字列 = tween.to.strings;
  var round = tween.round;
  var 数値 = [];
  var toNumbersLength = tween.to.numbers.length;
  var 進行状況 = (void 0);
  (var n = 0; n < toNumbersLength; n++) の場合 {
  var 値 = (void 0);
  var toNumber = tween.to.numbers[n];
  var fromNumber = tween.from.numbers[n] || 0;
  場合 (!tween.isPath) {
   値 = fromNumber + (eased * (toNumber - fromNumber));
  } それ以外 {
   値 = getPathProgress(tween.value, easier * toNumber);
  }
  if (丸め) {
   tween.isColor が n > 2 の場合
   値 = Math.round(値 * round) / round;
   }
  }
  numbers.push(値);
  }
  var 文字列の長さ = 文字列.長さ;
  if (!文字列の長さ) {
  進捗状況 = 数値[0];
  } それ以外 {
  進捗状況 = 文字列[0];
  (var s = 0; s < 文字列の長さ; s++) {
   var a = 文字列[s];
   var b = 文字列[s + 1];
   var n$1 = 数値[s];
   (!isNaN(n$1))の場合{
   もし(!b){
    進捗 += n$1 + ' ';
   } それ以外 {
    進捗 += n$1 + b;
   }
   }
  }
  }
  アニメーションの進行状況を設定します。
  anim.currentValue = 進行状況;
  私は++;
 }
}

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

以下もご興味があるかもしれません:
  • js+ca​​nvasでカードゲームを実現

<<:  効率的なMySQLページングの詳細な説明

>>:  Linux コンパイル最適化で習得しなければならないいくつかの姿勢のまとめ

推薦する

Nginx メモリプールのソースコード分析

目次メモリプールの概要1. nginxデータ構造2. nginxはOSからスペースngx_creat...

最新の超詳細な VMware 仮想マシンのダウンロードとインストールのグラフィック チュートリアル

目次1. 仮想マシンをダウンロードする2. 仮想マシンのインストールVMware のダウンロードとイ...

Tencent Cloud 上で Hadoop 3.x 疑似クラスターを構築する方法を説明します

1. 環境整備CentOS Linux リリース 7.5.1804 (コア)インストールフォルダを作...

純粋な CSS3 で水平無限スクロールを実装するためのサンプル コード

この記事の例はすべて小さなプログラムで書かれていますが、実装される機能には影響しません。 wxmlル...

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

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

Vue.jsでタブ切り替えと色変更操作を実装する解説

この機能を実装するにあたり、本家ブロガーさんから拝借した方法では色の切り替えが実現できず、長い間考え...

MySQLのロック構造の詳細な説明

Mysqlは3種類のロック構造をサポートしていますテーブルレベルのロック、低オーバーヘッド、高速ロッ...

vue-router のハッシュモードと履歴モードの違い

vue-routerには2つのモードがありますハッシュモード履歴モード1. シングルページアプリケー...

ブラウザ(IEシリーズ)を判別するための条件付きコメント

<!--[if IE 6]> IE6 のみが認識可能 <![endif]-->...

CentOS8 - bash: 文字化けとその解決方法

この状況は通常、中国語言語パックがインストールされていないか、デフォルトの言語設定に問題があるために...

データ URI スキームを使用して Web ページに画像を埋め込む方法の紹介

データ URI スキームを使用すると、HTML、CSS、Javascript などで使用できるインラ...

Maven プロジェクトのリモート デプロイメント && Tomcat を使用してデータベース接続を構成する方法

1つ。 tomcat を使用したリモート展開1.1 発生した問題:プロジェクトでは、サードパーティの...

マスタークラスタに再参加する k8s ノードの実装

1. ノードを削除するkubectl delete node node01を実行します。 2. この...

MySql データベースにおける単一テーブル クエリと複数テーブル結合クエリの効率の比較

この間、プロジェクトに取り組んでいるときに、データ間の接続が非常に複雑なモジュールに遭遇しました。テ...

Docker JVM メモリ使用量の表示

1. Docker コンテナのホスト マシンに入り、指定されたイメージを実行しているコンテナ ID ...