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 相关文章推荐
如何学习Javascript入门指导
Nov 01 Javascript
javascript框架设计之类工厂
Jun 23 Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 Javascript
jQuery Validate表单验证深入学习
Dec 18 Javascript
利用Node.js制作爬取大众点评的爬虫
Sep 22 Javascript
canvas绘制七巧板
Feb 03 Javascript
3种vue路由传参的基本模式
Feb 22 Javascript
JavaScript实现仿Clock ISO时钟
Jun 29 Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 Javascript
Angular PWA使用的Demo示例
Jan 31 Javascript
Vue实现简单的拖拽效果
Aug 25 Javascript
vue循环中点击选中再点击取消(单选)的实现
Sep 10 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
PHP安装攻略:常见问题解答(三)
2006/10/09 PHP
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
php 启动报错如何解决
2014/01/17 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
javascript add event remove event
2008/04/07 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
在python中实现强制关闭线程的示例
2019/01/22 Python
pytorch中index_select()的用法详解
2021/01/06 Python
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
个人德育工作总结
2015/03/05 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
PHP获取学生成绩的方法
2021/11/17 PHP