初学laya开发的微信小游戏终于上线啦!!!

过年耗费3个月空闲时间开发出来的小游戏,游戏内容是模仿小时候玩过的一款pc端游戏叫怪怪水族馆~~

微信搜《奇异水族馆》即可畅玩哦!!

暂时采用本地缓存游戏数据,后面引入游戏数据自动上传保存,功能模块还在开发中~

数据处理这块,主要采用了 javascript 的 Proxy 和 Object.defineProperty 原理,实现观察者模式,根据数据变动改变界面,对于开发体验来说是真香!!!

最近阅读了一下vue的源码,发现数据绑定也是同理,不过vue对数据监听绑定这块的处理的更加详细,继续深入学习一波~~

奉上自己封装实现的函数,整个游戏数据逻辑基本都是用这个,实属好用~~

    //对象属性增加或删除会触发函数调用this.proxyObjChange = (obj,caller,fun,args=[])=>{return new Proxy(obj, {deleteProperty(target,key){delete target[key]fun.apply(caller,args)return true;},set(target, propKey, value, receiver) {let oldData = target[propKey]let result =   Reflect.set(target, propKey, value, receiver);fun.apply(caller,[propKey,oldData,...args])return result}});}/* *  obj 监听的对象*  key 监听的对象中的某个字段*  caller 回调函数的作用域*  fun 数据变化后执行回调函数*  args 数据变化后执行回调函数传入的参数*  exeFun 是否立即执行一次回调函数**/this.setObjSet = (obj,key,caller,fun,args=[],exeFun)=>{let initVlaue = obj[key]Object.defineProperty(obj,key,{get:function(){return initVlaue},set:function(val){if(fun){let result = fun.apply(caller,[val,...args])if(result){initVlaue = val;}}else{initVlaue = val;}return initVlaue},})if(exeFun){obj[key] = obj[key]}}

专门一个文件放游戏数据处理模块

数据监听变动,调用对应函数

localStorage本地存储,保存游戏数据

以下是大概游戏界面

              

              

扫码体验

laya开发微信小游戏《奇异水族馆》之 观察者模式应用相关推荐

  1. 新手入门:如何用Laya开发微信小游戏?

    1.环境准备 1.1 LayaAirIDE 1.7.14版本才开始集成微信小游戏开发. 1.2 微信小游戏开发工具 微信小游戏开发工具是小游戏开发与测试的环境,由于LayaAir引擎的开发者完全可以使 ...

  2. 使用Laya开发微信小游戏时无法使用位图字体解决方案

    -前言- 依照Laya官方提供的位图字体使用方案时,在本地是可以正常使用的.当发布到微信小游戏上就没法使用.经过查找是缺少解析xml的库. -正文- 方案1:引入xml解析库 缺少什么我们就引入什么, ...

  3. 微信小游戏申请注册流程+开发微信小游戏类目需要具备条件

    微信小游戏申请注册流程+开发微信小游戏类目需要具备条件 在这里先讲一下,小程序和小游戏前面的注册流程都是一样的,在注册完毕登录小程序后台后选择类目时需要注意一下,我下面讲解的是已经通过认证的服务号进行 ...

  4. webpack + typescript 开发微信小游戏实践

    源码地址 微信小游戏版本技术选型使用typescript开发 但是微信小游戏原生不支持 typescript 开发,于是探索一下使用ts开发微信小游戏 1. 创建小游戏 使用测试号,创建一个使用官方示 ...

  5. 如何使用egret开发微信小游戏(一)Hello World

    如何使用egret开发微信小游戏(一)Hello World 微信小游戏上线以来,凭借微信海量的用户,取得了巨大的成功,从跳一跳到大家一起来滑水,从2d游戏到3d游戏,许多游戏开发者都赚的盆满钵满,我 ...

  6. Unity开发微信小游戏步骤

    unity开发微信小游戏 https://gitcode.net/mirrors/wechat-miniprogram/minigame-unity-webgl-transform?utm_sourc ...

  7. unity开发微信小游戏(5)- 微信好友排行榜

    效果展示: 如果感觉文章有用的,也烦请大家多多支持(扫描上面二维码n(*≧▽≦*)n)!!❤❤❤ unity开发微信好友排行榜可以说是把我虐的体无完肤,但为了拿下这功能,硬壳了三天,把我所踩过的坑分享 ...

  8. 利用Phaser开发微信小游戏(排行榜小结)

                                                                利用Phaser开发微信小游戏(排行榜小结) 小游戏中的开放数据域可用来保存游戏 ...

  9. Unity 开发微信小游戏初探

    前言 最近因项目需要开始研究Unity开发微信小游戏相关的知识.期间遇到各种坑,网上查阅的资料基本类似,无法解决自己遇到的问题.特用本文记录下过程,方便其他人遇到同样的问题时能够参考. 开发环境 Un ...

最新文章

  1. 判断一个字符串中出现次数最多的字符
  2. python中的浮点数用法_如何利用Python在运算后得到浮点数值的方法详解
  3. 字节Java高级岗:javaio流面试题
  4. lodop+art-template实现web端漂亮的小票样式打印
  5. mac m1下编译spring框架
  6. eclipse和Tomcat绑定
  7. 软件开发如同木匠做桌子
  8. Transact-SQL数据类型(文本/图形/日期和时间/货币/特定类型)
  9. 设置防火墙规则,防止因为TCP第三次握手,系统自动返回包
  10. spring-cloud-dependencies的Edgware.RELEASE版本问题
  11. MongoDB-概述:跨平台的面向文档的高性能高可用性易扩展数据库
  12. 【UCOSIII操作系统】任务篇(2)相关API函数
  13. 【读书笔记】巴比伦富翁的理财课
  14. golang:同个包下不同文件不能互相调用函数
  15. 解决IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter
  16. js-最常用的js表单校验1
  17. redis 基本原理及安装
  18. LA3708:Graveyard
  19. 解读scrapy各个组件中的from_crawler()方法
  20. 认识涤生大数据的几个月,彻底改变了我

热门文章

  1. 将多个中通快递的物流信息导出CSV表格的实例
  2. 【目标检测】IOU介绍
  3. 等差素数数列-蓝桥杯
  4. 【大学物理实验】夫兰克-赫兹实验
  5. 身份证到期换新证流程
  6. 高通平台TP常见问题
  7. Windows环境搭建 Gitlab 服务器
  8. wifi共享精灵教你找工作
  9. 百度大脑DuMix AR赋能中国人寿财产保险,助力车险定损场景数字化转型
  10. c语言保留字(关键字)汇总