本文实例为大家分享了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

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++;

}

}

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

android扑克发牌动画,JS实现纸牌发牌动画相关推荐

  1. JS写纸牌发牌和动画(详细解剖)

    先看演示 游戏构建准备 1.准备52张纸牌 2.一张桌布 3.编辑工具为 Visual Code 技术概要 1.对象操作 2.数据操作 3.JS animation动画 4.全局变量 function ...

  2. c语言程序发牌急用,c语言纸牌发牌程序源代码(附注释)

    #include<stdio.h>#include<math.h>#include<time.h>/*定义输出与数组下标不一致的排符*/voidprint(intt ...

  3. 期末大作业--德州扑克(包含双人手动发牌,多人手动发牌,多人手动、自动发牌三个版本)

    双人手动发牌 初始版本很简单,输入两人名字,再每人输入5张牌 #include<iostream> #include<algorithm> #include<map> ...

  4. JS如何监听动画结束

    场景描述 在使用JS控制动画时一般需要在动画结束后执行回调去进行DOM的相关操作,所以需要监听动画结束进行回调.JS提供了以下事件用于监听动画的结束,简单总结学习下. CSS3动画监听事件 trans ...

  5. android开发上下翻转动画,怎么在android中利用FlipAnimation实现一个3D垂直翻转动画...

    怎么在android中利用FlipAnimation实现一个3D垂直翻转动画 发布时间:2021-02-20 17:08:30 来源:亿速云 阅读:122 作者:Leah 这期内容当中小编将会给大家带 ...

  6. 构建node.js基础镜像_在Android上构建Node.js应用程序

    构建node.js基础镜像 by Aurélien Giraud 通过AurélienGiraud 在Android上构建Node.js应用程序-第1部分:Termux,Vim和Node.js (Bu ...

  7. Android 动画之View动画效果和Activity切换动画效果

    View动画效果: 1.>>Tween动画 通过对View的内容进行一系列的图形变换(平移.缩放.旋转.透明度变换)实现动画效果,补间动画需要使用<set>节点作为根节点,子节 ...

  8. android ui动画效果怎么做,AndroidUI 布局动画-为列表添加布局动画效果

    新建一个Android project ,使MainActivity 继承自 ListActivity: public class MainActivity extends ListActivity ...

  9. js进阶 13-6 jquery动画效果相关常用函数有哪些

    js进阶 13-6 jquery动画效果相关常用函数有哪些 一.总结 一句话总结:animate(),stop(),finish(),delat()四个. 1.stop()方法的基本用法是什么(sto ...

最新文章

  1. 第四百零三节,python网站在线支付,支付宝接口集成与远程调试,
  2. Linux学习之CentOS(七)--CentOS下j2ee环境搭建
  3. Maven 修改本地存储库位置--转
  4. 一图弄懂ARM中都有什么
  5. #ifndef #define #endif ”防止头文件被重复包 .
  6. Leetcode--31. 下一个排列
  7. mysql 常用数据库连接池_常见的数据库连接池
  8. Spring框架 AOP
  9. 阅读类app界面设计UI可临摹素材模板
  10. chromedriver放在哪个目录下_python | Linux各目录及每个目录的详细介绍 - MR_黄Python之路...
  11. xv6 syscall实验
  12. tar.bz2 解压命令
  13. 从Labview硬件平台看ZYNQ 的应用
  14. CANoe软件打不开了怎么办?
  15. 汉语言文学专业需要学计算机吗,读个汉语言文学专业,学了有什么鬼用?
  16. python plot线形和颜色
  17. ubuntu安装frps服务器与xtcp配置
  18. 合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信监息提取、测
  19. STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记三(3):Cortex-M3指令描述
  20. Mysql 查询数据并按顺序添加序号

热门文章

  1. iOS----------iPhone导出手机所有短信
  2. jQuery操作css样式、属性、动画、节点
  3. MyBatis中调用存储过程和函数
  4. 11月27号例会记录
  5. jquery tab点击切换的问题
  6. 【Win 10应用开发】SplitView控件
  7. each,collect map collect! map!
  8. C语言的本质(4)——浮点数的本质与运算
  9. Oracle发布Solaris 11 for Sparc/x86
  10. VC++ 鼠标非显示区域命中测试消息WM_NCHITTEST和相关编程问题学习1