JS实现纸牌发牌动画


Posted in Javascript onJanuary 19, 2021

本文实例为大家分享了JS实现纸牌发牌动画的具体代码,供大家参考,具体内容如下

先看演示

JS实现纸牌发牌动画

JS实现纸牌发牌动画

游戏构建准备

1.准备52张纸牌
2.一张桌布
3.编辑工具为 Visual Code

技术概要

1.对象操作
2.数据操作
3.JS animation动画
4.全局变量

function desen_x(){
 let 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;//存入到全局变量中 否则每次只能存一个数值
 }
 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=[window.array[0],window.array[1],window.array[2],window.array[3]];
 var ti=0;
 var iamges="../poker/"+temp+".png";//这是图片的默认路径 +你的 desen
 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 that=this;
  var img_1=document.createElement("img");
  img_1.src+="./images/poker/"+temp[i]+".png";//对创建的img赋值可变的路径
   console.log("等于0时");
  var ten=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=node[11];
 var n8=node[12];
 var popo=anime({//animation动画可在最后查看
  targets: n5, //操作的对象
  translateX:-150, //移动到的横向位置
  translateY: -250,//移动到的纵向位置
  easing: 'easeInOutQuad',//缓动,不更改css机制
  duration:100,//完成时间
  });
  var popo1= anime({
  targets: n6,
  translateX:-100,
  translateY: -250,
  easing: 'easeInOutQuad',
  duration:200,
  });
  var popo2=anime({
  targets: n7,
  translateX:-50,
  translateY: -250,
  easing: 'easeInOutQuad',
  duration:300,
  });
  var popo3= anime({
  targets: n8,
  translateX:0,
  translateY: -250,
  easing: 'easeInOutQuad',
  duration:400,
  });
}
function gui(){ //GUI 是将所有节点复位,方便下次发牌
 var node = document.getElementById("d_back").childNodes;
 var n5=node[9];
 var n6=node[10];
 var n7=node[11];
 var n8=node[12];
 var popo4=anime({
  targets: [n5,n6,n7,n8],
  translateX:0,
  translateY: 0,
 })
 node.removeChild(popo4);
}

animation封装

function setAnimationsProgress(insTime) { //该方法有多个dom时,则执行异或异步线程模式进行
 var i = 0;
 var animations = instance.animations;
 var animationsLength = animations.length; 
 while (i < animationsLength) { 
  var anim = animations[i];
  var animatable = 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 eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);
  var strings = tween.to.strings;
  var round = tween.round;
  var numbers = [];
  var toNumbersLength = tween.to.numbers.length;
  var progress = (void 0);
  for (var n = 0; n < toNumbersLength; n++) {
  var value = (void 0);
  var toNumber = tween.to.numbers[n];
  var fromNumber = tween.from.numbers[n] || 0;
  if (!tween.isPath) {
   value = fromNumber + (eased * (toNumber - fromNumber));
  } else {
   value = getPathProgress(tween.value, eased * toNumber);
  }
  if (round) {
   if (!(tween.isColor && n > 2)) {
   value = Math.round(value * round) / round;
   }
  }
  numbers.push(value);
  }
  var stringsLength = strings.length;
  if (!stringsLength) {
  progress = numbers[0];
  } else {
  progress = strings[0];
  for (var s = 0; s < stringsLength; s++) {
   var a = strings[s];
   var b = strings[s + 1];
   var n$1 = numbers[s];
   if (!isNaN(n$1)) {
   if (!b) {
    progress += n$1 + ' ';
   } else {
    progress += n$1 + b;
   }
   }
  }
  }
  setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);
  anim.currentValue = progress;
  i++;
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js常用函数 不错
Sep 08 Javascript
javascript模块化是什么及其优缺点介绍
Sep 02 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
Dec 31 Javascript
Jquery注册事件实现方法
May 18 Javascript
基于javascript实现简单计算器功能
Jan 03 Javascript
js实现五星评价功能
Mar 08 Javascript
详解微信第三方小程序代开发
Jun 23 Javascript
VUE实现表单元素双向绑定(总结)
Aug 08 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
Mar 20 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
Sep 05 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
Nov 16 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
Jul 14 Javascript
微信小程序canvas实现签名功能
Jan 19 #Javascript
vue二选一tab栏切换新做法实现
Jan 19 #Vue.js
微信小程序选择图片控件
Jan 19 #Javascript
jQuery冲突问题解决方法
Jan 19 #jQuery
js实现随机点名
Jan 19 #Javascript
js实现有趣的倒计时效果
Jan 19 #Javascript
微信小程序之高德地图多点路线规划过程示例详解
Jan 18 #Javascript
You might like
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
python实现微信远程控制电脑
2018/02/22 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
Python urllib3软件包的使用说明
2020/11/18 Python
Python如何批量生成和调用变量
2020/11/21 Python
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
大专生工程监理求职信
2013/10/04 职场文书
初三学习计划书范文
2014/04/30 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
Apache自带的ab压力测试工具的实现
2022/07/23 Servers