1.小游戏上传时如果勾选自动压缩的话,实际还同时会混淆。因为用到SpringIOC 功能,不能用反射,所以去掉压缩,自行做压缩(主要是把一些库文件换成min版本,并且在头尾加上;window.egret = egret;var egret = window.egret;),要是微信可以把压缩和混淆分开来就好了。
2.竖屏换成横屏,只要在game.json里把"deviceOrientation": "portrait",改成 "deviceOrientation": "landscape",
3.引入第三方库报 第三方库 is not defined
错误,在wxgame.ts里加一些代码:
if (filename == 'libs/keyboard/keyboard.js' || filename == 'libs/keyboard/keyboard.min.js') { content += ';window.keyboard = keyboard'; }
4. 如何控制代码包的策略:
搬:能搬的尽量搬。图片、音频、数据、甚至页面,很多都可以搬至服务端,需要时再通过网络载入。将非核心非必要的内容移出代码包可以大幅度释放代码包空间。
删:搬不了的尽量删。已下线、已废弃、无关、冗余等不需要/不再需要的内容应及时清理,避免持续占用代码包空间。
压缩:图片、js、wxss、wxml等均存在压缩空间。很多时候,适当程度的压缩,能在几乎不影响功能体验的同时,有效减少空间占用。
合并:压缩不了的尽量合并。功能类似的资源可以归一化,在需求/设计/实现层面减少资源的重复消耗。
微信小游戏主包限制为4M,但 同时还有50M的缓存空间可以利用。所以把必要的资源放在包内,把可以动态加载的资源放在自己的web服务器上跨域加载就是非常必要的。
首先要开启:
egret.ImageLoader.crossOrigin = "anonymous";
然后把资源分为大厅资源(以后可能还要区分,比如大厅背景也远程加载),各个小游戏资源,
加载大厅资源如下:
RES.loadConfig("resource/default.res.json","resource/");//加载大厅资源
加载各个游戏资源(比如有cat,pig,dog游戏):
RES.loadConfig("http://www.app.com/resource/cat/cat.res.json", "http://192.168.1.100/resource/cat/");//加载cat资源配置文件 RES.loadConfig("http://www.app.com/resource/cat/pig.res.json", "http://192.168.1.100/resource/pig/");//加载cat资源配置文件 RES.loadConfig("http://www.app.com/resource/cat/dog.res.json", "http://192.168.1.100/resource/dog/");//加载cat资源配置文件
具体请参考:
使用 AssetsManager 灵活定制微信小游戏的缓存策略
5.如何调用微信API
egretProperties.json先引入
{
"name": "weixinapi",
"path": "libs/weixinapi"
}
如果跨域访问jsapi.do,则需要在nginx服务器加入
add_header Access-Control-Allow-Origin *; 然后就可以调用了。
如何进行小游戏的参数传递,比如分享游戏,邀请好友,开房,都会需要有参数传递,小游戏的参数传递和接受有以下几种方式:
1.通过微信公众号的自定义菜单--》菜单内容选择小程序--》小程序路径填写 比如 (?pid=ningbo) 就可以用来做公众号代理游戏方案。
2.通过分享接口 监听用户点击右上角菜单的“转发”按钮时触发的事件
wx.onShareAppMessage(function callback) 可以填入启动参数,然后wx.onLaunch() 或 wx.onShow 获取启动参数中的 query
wx.onShow(function callback)
LaunchOption wx.getLaunchOptionsSync()
微信小游戏正式版:
https://developers.weixin.qq.com/minigame/dev/devtools/download.html
微信小程序测试版
https://developers.weixin.qq.com/miniprogram/dev/devtools/beta.html
微信小程序正式版
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
微信上调试神器
https://github.com/Tencent/vConsole
发布微信小游戏
egret publish --target wxgame
好友排行榜
JS安全域名:分享时不至于出现链接。落地域名如果不是此处设置的域名则影响你公众号网页的分享、JS调用(比如无法获取用户的地理位置、收货地址等),主要是分享到朋友圈的时候使用
业务域名: 客户端CDN地址,落地域名如果不是此处设置的域名则用户访问你的网址后会有风险提示,在微信浏览器中点击文本框,会弹出提示,很不爽,通过配置业务域名可以将该提示去掉(似乎不加也没影响)
网页授权域名:落地域名如果不是此处设置的域名则用户访问会报错,无法进入到网址页面, 主要是获取openid的时候使用
目前refer值在ios14以下的微信和安卓返回的是一样的没问题,ios14 和微信7.0.18返回就只有域名。
最近发现微信开发者工具版本1.05版 网页调试 referer不全,同样的链接 在1.03版本是可以的 在1.05版referer就不可以,
原本默认的 referer 策略(policy)是no-referrer-when-downgrade,即允许referer带上来源页面地址上的请求参数,Chrome85+将策略修改为strict-origin-when-cross-origin,即如果请求地址与请求页面非同源,将只携带请求的域名,不会再带上来源页面地址的请求参数。
如何解决这个问题呢?
可以在html里设置
<meta name="referrer" content="no-referrer-when-downgrade" />
也可以在nginx设置header,这样就不用重新上线了
add_header Referrer-Policy no-referrer-when-downgrade;