情人节学写html5微信游戏

news/2024/9/17 16:58:07

情人节都在干什么??? 当然是写代码!!!

看某书正好以一个html5微信游戏,很适合今天的日子

附上demo:demo 请在手机上查看,pc端请切换手机调试模式,目前没弄完后续完善(图片也懒得弄了,要过年了,懒~)

布局和样式就忽略了,详情可以参考代码或者去我的github查看

动画效果用到了 TweenMax 这个可是个大宝贝儿~

取一段效果来说明吧

function showScene1() {TweenMax.to(heart, 1, {opacity: 1})TweenMax.to(heart, .5, {scaleX: 1.2,scaleY: 1.2,repeat: -1,yoyo: true})TweenMax.to(t0, 1, {top: "40%",opacity: 1,delay: .3})TweenMax.to(t1, 1, {top: "57%",opacity: 1,delay: .5})TweenMax.to(t2, 1, {top: "65%",opacity: 1,delay: 1})TweenMax.to(sbtn, 1, {top: "75%",opacity: 1,delay: 1.4})
}
复制代码

这是其中一个动画效果说说他的参数

(target,duration,vars)

------我是翻译线-----

(目标,动画的时间长度(单位:秒),包含多种属性的对象、透明度、位置、延时啥啥啥的具体参考官方api)

我们右上角有一个音乐播放的控制,默认是不播放的

musicoff.onclick = function () {musicon.className = musicon.className ? "" : "hidden"musicoff.className = musicoff.className ? "" : 'hidden'music.play()
}
musicon.onclick = function () {musicon.className = musicon.className ? "" : "hidden"musicoff.className = musicoff.className ? "" : 'hidden'music.pause()
}
复制代码

重点是 play() 和 pause() 来控制播放和停止

其余的是来切换类达到视觉效果

制作logo坐标点,书籍是采用flash制作然后转换为坐标点,获取然后复制出来

let p = [[152,139],[160,115],[160,140],[160,166],[160,192],[160,218],[160,243],[160,269],[160,295],[123,160],[94,181],[112,167],[110,149],[133,152],[160,126],[160,152],[160,178],[160,204],[160,229],[160,255],[160,283],[143,145],[103,174],[110,160],[168,139],[198,160],[227,182],[208,167],[211,149],[188,153],[178,146],[217,174],[210,160],[152,166],[123,187],[94,209],[112,194],[133,180],[143,173],[103,201],[168,167],[198,188],[227,209],[208,195],[188,180],[178,173],[217,202],[152,194],[123,215],[94,237],[112,222],[133,208],[143,201],[103,229],[168,195],[198,216],[227,237],[208,223],[188,208],[178,201],[217,230],[152,221],[123,242],[94,264],[112,249],[133,235],[143,228],[103,256],[168,222],[198,243],[227,264],[208,250],[188,235],[178,228],[217,257],[152,250],[123,271],[112,278],[133,264],[143,257],[103,285],[168,251],[198,272],[208,279],[188,264],[178,257],[217,286],[110,203],[110,234],[211,204],[210,235],[110,213],[110,244],[211,214],[210,245],[128,97],[116,102],[103,109],[91,116],[81,125],[72,134],[65,146],[58,156],[52,169],[48,181],[45,194],[43,208],[43,220],[45,234],[49,246],[53,259],[60,271],[68,281],[76,292],[86,301],[98,310],[110,317],[125,322],[137,326],[151,326],[165,326],[178,326],[191,322],[205,318],[219,312],[231,304],[241,295],[251,285],[259,274],[266,261],[271,249],[274,237],[277,223],[277,209],[276,196],[273,184],[270,171],[264,160],[258,148],[251,137],[241,127],[231,118],[142,94],[154,94],[166,94],[179,94],[191,98],[204,102],[217,109]];复制代码

我是坐标点,恐怖吧!!!这个数据是用过for循环弄出来的。

for(var i = 0; i < a.numChildren;i++){trace("["+Math.floor(a.getChildAt(i).x)+ "," + Math.floor(a.getChildAt(i).y) +"],")
}
复制代码

然后用户每触摸一次生成相应的圆点

function getPosition(ev) {if (drawMode) { //只有在绘图模式下才开始绘制圆点ev = ev || window.event ev.preventDefault()//为了使图案在水平方向上居中,计算出当前屏幕宽度与设计宽度(320像素)之间的差异值,以作为后续的位移基准值let xbias = (window.innerWidth - 320) / 2let touch = ev.touches[0]   //获取第一个触点的信息let point = { x: 0,y: 0}  //创建一个对象来储存触点坐标point.x = Number(touch.pageX) //记录触点X坐标point.y = Number(touch.pageY) //记录触点Y坐标if (mi < pl) {let objdiv = document.createElement('div')  let objname = 's_' + mi  //设置name属性  objdiv.id = objnameobjdiv.style.position = 'absolute'objdiv.style.display = 'block'objdiv.style.top = point.y + 'px'objdiv.style.left = point.x + 'px'objdiv.style.background = '#fff'objdiv.style.borderRadius = '50%'objdiv.style.width = '12px'objdiv.style.height = '12px'objdiv.style.zIndex = miobjdiv.innerHTML = ' 'scene2.appendChild(objdiv)TweenMax.to(objdiv, 1, {top: p[mi][1],left: p[mi][0] + xbias})  //创建从触摸点到目标坐标点的位移动画mi++} else {drawMode = false //圆点全部显示完毕后,关闭绘图模式TweenMax.to(lbtn, .8, {opacity: 1,top: '80%'}) //显示结束按钮}}return false
}
复制代码

这是生成logo圆点的关键方法!!!剩下还有最后一个动画,效果可以参考代码.

---最后--- 大家今天都是怎么过得???!!!


http://lihuaxi.xjx100.cn/news/237516.html

相关文章

机器学习数据拆分_解释了关键的机器学习概念-数据集拆分和随机森林

机器学习数据拆分数据集分割 (Dataset Splitting) Splitting up into Training, Cross Validation, and Test sets are common best practices. This allows you to tune various parameters of the algorithm without making judgements that specifically conform to trainin…

以太坊(Ethereum)

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 项目介绍 是第一代智能合约途径&#xff0c;也常常被称作为区块链2.0&#xff0c;2013年由Vitalik Burtain建议。官网上的宣传语&#xff…

修改Java-source版本

2019独角兽企业重金招聘Python工程师标准>>> pom.xml添加以下&#xff1a;<plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin>&l…

kafka streams_如何使用Kafka Streams实施更改数据捕获

kafka streamsChange Data Capture (CDC) involves observing the changes happening in a database and making them available in a form that can be exploited by other systems. 更改数据捕获 (CDC)涉及观察数据库中发生的更改&#xff0c;并将其以可被其他系统利用的形式…

区块链技术+IPFS的结合带来全新解决方案

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 “互联网”时代社会各行各业生产和人们生活模式都发生了颠覆性改变&#xff0c;引发巨大变革&#xff0c;数据资产价值愈加凸显。享受红利的…

【JVM故障问题排查心得】「内存诊断系列」JVM内存与Kubernetes中pod的内存、容器的内存不一致所引发的OOMKilled问题总结(下)

承接上文 之前文章根据《【JVM故障问题排查心得】「内存诊断系列」JVM内存与Kubernetes中pod的内存、容器的内存不一致所引发的OOMKilled问题总结&#xff08;上&#xff09;》我们知道了如何进行设置和控制对应的堆内存和容器内存的之间的关系&#xff0c;所以防止JVM的堆内存…

mysql format函数对数字类型转化的坑

原值param 1234.5678 format(param, 2) &#xff08;不建议&#xff09; 结果&#xff0c;字符串类型&#xff0c;123,4.57 会导致你图表char 生成失败&#xff0c;直接变0 convert(param, decimal(12,2))&#xff08;建议&#xff09; 结果, 数值类型 1234.57 cast(p…

流感下的北京中年 引发的消费型保险相关干货资料收集整理

流感下的北京中年 引发的消费型保险相关干货资料收集整理--------------《流感下的北京中年》&#xff1a;关于保险你需要知道的一切&#xff01;http://url.cn/5Sorga4 解析重症流感——他&#xff0c;不是死于感冒&#xff01;https://mp.weixin.qq.com/s/_THPzh1bRA0kFEDlrv…