我解决了 https://developers.weixin.qq.com/community/develop/article/doc/000ee82cfa89e81150b1b462066413
无法读取本地文件在引用本地文件时一直出现“1300013 permission denied 权限错误,文件是只读或只写”的报错,可是引用的文件并不是只读属性
06-20我研究一天解决了,详见 https://developers.weixin.qq.com/community/develop/article/doc/000ee82cfa89e81150b1b462066413
小程序怎么请求本地json数据?微信小程序怎么请求本地json数据
06-20[代码]var[代码] [代码]ping = wx.createUDPSocket()[代码][代码] [代码][代码]if[代码] [代码](ping === [代码][代码]null[代码][代码]) {[代码][代码] [代码][代码]console.log([代码][代码]'暂不支持'[代码][代码])[代码][代码] [代码][代码]return[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]const dIp = [代码][代码]"localhost"[代码][代码] [代码][代码]const dPort = ping.bind()[代码][代码] [代码][代码]ping.send({[代码][代码] [代码][代码]address: dIp,[代码][代码] [代码][代码]port: dPort,[代码][代码] [代码][代码]message: [代码][代码]"ping"[代码][代码] [代码][代码]})[代码][代码] [代码][代码]var[代码] [代码]pong = [代码][代码]null[代码][代码] [代码][代码]ping.onMessage([代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]console.log(res)[代码][代码] [代码][代码]let str = util.newAb2Str(res.message)[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]"pong"[代码] [代码]!= str) {[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]i = 0; i < 256; i++) {[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]j = 0; j < 256; j++) {[代码][代码] [代码][代码]var[代码] [代码]ip = [代码][代码]"192.168."[代码] [代码]+ i + [代码][代码]"."[代码] [代码]+ j[代码][代码] [代码][代码]var[代码] [代码]port = res.remoteInfo.port[代码][代码] [代码][代码]console.log([代码][代码]"PONG"[代码][代码], ip, port)[代码][代码] [代码][代码]if[代码] [代码](i == 0 && i == j) {[代码][代码] [代码][代码]pong = wx.createUDPSocket()[代码][代码] [代码][代码]pong.bind()[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]pong.send({[代码][代码] [代码][代码]address: ip,[代码][代码] [代码][代码]port: port,[代码][代码] [代码][代码]message: [代码][代码]"pong"[代码][代码] [代码][代码]})[代码][代码] [代码][代码]util.delay(100)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]ping.close()[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]locationUrl_ip: res.remoteInfo.address[代码][代码] [代码][代码]})[代码][代码] [代码][代码]that.initUdpSocket()[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码]无奈啊
UDP的功能完善微信小程序从2.7.0开始终于支持UDP了 希望能完善一下UDP的功能 希望能添加获取本机局域网IP地址的方法。 希望能提供广播的方式,现在只能指定IP。 应用场景,我们这边做物联网。通过UDP组播来发送消息来搜索局域网的硬件装置。
2019-07-28[代码]var[代码] [代码]ping = wx.createUDPSocket()[代码][代码] [代码][代码]if[代码] [代码](ping === [代码][代码]null[代码][代码]) {[代码][代码] [代码][代码]console.log([代码][代码]'暂不支持'[代码][代码])[代码][代码] [代码][代码]return[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]const dIp = [代码][代码]"localhost"[代码][代码] [代码][代码]const dPort = ping.bind()[代码][代码] [代码][代码]ping.send({[代码][代码] [代码][代码]address: dIp,[代码][代码] [代码][代码]port: dPort,[代码][代码] [代码][代码]message: [代码][代码]"ping"[代码][代码] [代码][代码]})[代码][代码] [代码][代码]var[代码] [代码]pong = [代码][代码]null[代码][代码] [代码][代码]ping.onMessage([代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]console.log(res)[代码][代码] [代码][代码]let str = util.newAb2Str(res.message)[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]"pong"[代码] [代码]!= str) {[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]i = 0; i < 256; i++) {[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]j = 0; j < 256; j++) {[代码][代码] [代码][代码]var[代码] [代码]ip = [代码][代码]"192.168."[代码] [代码]+ i + [代码][代码]"."[代码] [代码]+ j[代码][代码] [代码][代码]var[代码] [代码]port = res.remoteInfo.port[代码][代码] [代码][代码]console.log([代码][代码]"PONG"[代码][代码], ip, port)[代码][代码] [代码][代码]if[代码] [代码](i == 0 && i == j) {[代码][代码] [代码][代码]pong = wx.createUDPSocket()[代码][代码] [代码][代码]pong.bind()[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]pong.send({[代码][代码] [代码][代码]address: ip,[代码][代码] [代码][代码]port: port,[代码][代码] [代码][代码]message: [代码][代码]"pong"[代码][代码] [代码][代码]})[代码][代码] [代码][代码]util.delay(100)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]ping.close()[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]locationUrl_ip: res.remoteInfo.address[代码][代码] [代码][代码]})[代码][代码] [代码][代码]that.initUdpSocket()[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码]循环扫描 最无奈的办法了
如何在小程序内获取局域网IP,非外网IP- 需求的场景描述(希望解决的问题) UDP通讯 wx.createUDPSocket 随着2.7.0基础库一起上线了,准备实验一下,刚一开始就遇到了一个大问题!如何获取本机局域网的IP? 另外UDP通讯支持组播吗? ---------------------------------------------------------------- 更新分割线 ---------------------------------------------------------------- 手动输入IP测试收发没什么大问题,但有两个问题 1、为什么发送可以是string/arrayBuffer,接收只有arrayBuffer 2、局域网UDP为什么还要配置服务器域名?怎么配?目前只能打开调试才能收发成功 ---------------------------------------------------------------- 更新分割线 ---------------------------------------------------------------- UDP不用配服务器域名,是我这边的错觉导致的 - 希望提供的能力 提供获取本机局域网IP的接口或创建UDP通讯时返回本机局域网IP
2019-07-28现在似乎没有接口实现和支持 小程序作为一个内网的mdns 服务存在,所以感觉内网需要有至少一个mdns的服务存在,才可以用相关接口发现。 如果想实现一个,局域网内数据传输【如 数据快传,所网络的局域网聊天】,还是无法实现!
微信小程序局域网访问失效1. 问题简介 微信小程序访问局域网时提示:域名“不在以下 request 合法域名列表中”。 2. 原先状态 之前开发了一款小程序,需要访问局域网内的服务器。按照官方文档(https://developers.weixin.qq.com/miniprogram/dev/framework/ability/mDNS.html)的说明,这是可以实现的,同时也亲测可用了。只不过在开发工具调试时,需要关闭域名校验。但是正式上线之后,是可以正常使用的。 3. 当前状态 因为当时服务器没有设置静态IP,所以重启后服务器的IP改变了,于是将小程序里对应的IP设置为新的IP。在开发工具调试时,关闭域名校验依然可以使用。但是正式上线之后,却无法正常访问了。以下是服务器和客户端的网路信息: 当前服务器IP: 10.198.198.30 客户端IP: 10.198.199.46 子网掩码: 255.255.254.0 默认网关: 10.198.198.1 求问,为什么这种情况下,局域网通信失效了?是因为没有被识别成局域网IP吗,还是接口更新了?
2019-07-27运用 Promise.all 完美解决问题,示例代码如下: [代码]var[代码] [代码]imgPool = [[代码][代码] [代码][代码]{[代码][代码] [代码][代码]"id"[代码][代码]: [代码][代码]"ByeD9rlryj0z69h9XWE4oiRa"[代码][代码],[代码][代码] [代码][代码]"index"[代码][代码]: 0,[代码][代码] [代码][代码]"imgSrc"[代码][代码]: [代码][代码]"images/home/Home_bg.png"[代码][代码],[代码][代码] [代码][代码]"x"[代码][代码]: 0,[代码][代码] [代码][代码]"y"[代码][代码]: 0,[代码][代码] [代码][代码]"width"[代码][代码]: 320,[代码][代码] [代码][代码]"height"[代码][代码]: 568[代码][代码] [代码][代码]},[代码][代码] [代码][代码]{[代码][代码] [代码][代码]"id"[代码][代码]: [代码][代码]"fM0BsD5g3f6IyM71ZYqwfEFX"[代码][代码],[代码][代码] [代码][代码]"index"[代码][代码]: 1,[代码][代码] [代码][代码]"imgSrc"[代码][代码]: [代码][代码]"images/home/Home_setting.png"[代码][代码],[代码][代码] [代码][代码]"x"[代码][代码]: 13.235,[代码][代码] [代码][代码]"y"[代码][代码]: 20.535999999999998,[代码][代码] [代码][代码]"width"[代码][代码]: 55.3,[代码][代码] [代码][代码]"height"[代码][代码]: 54.599999999999994[代码][代码] [代码][代码]},[代码][代码] [代码][代码]{[代码][代码] [代码][代码]"id"[代码][代码]: [代码][代码]"EE4YMeHyyOslDFnaKYfmXO5f"[代码][代码],[代码][代码] [代码][代码]"index"[代码][代码]: 2,[代码][代码] [代码][代码]"imgSrc"[代码][代码]: [代码][代码]"images/home/Home_btn1.png"[代码][代码],[代码][代码] [代码][代码]"x"[代码][代码]: 78.4,[代码][代码] [代码][代码]"y"[代码][代码]: 328.23,[代码][代码] [代码][代码]"width"[代码][代码]: 163.2,[代码][代码] [代码][代码]"height"[代码][代码]: 47[代码][代码] [代码][代码]}[代码][代码]][代码] [代码]// canvas 上下文[代码] [代码]var[代码] [代码]ctx = canvas.getContext([代码][代码]'2d'[代码][代码])[代码] [代码]var[代码] [代码]promise_list = [][代码] [代码]imgPool.forEach((item) => {[代码][代码] [代码][代码]// 将加载好的图片加入Promise中[代码][代码] [代码][代码]promise_list.push([代码][代码] [代码][代码]new[代码] [代码]Promise((resolve, reject) => {[代码][代码] [代码][代码]item.img = [代码][代码]new[代码] [代码]Image()[代码][代码] [代码][代码]item.img.src = item.imgSrc[代码][代码] [代码][代码]item.img.onload = [代码][代码]function[代码][代码]() {[代码][代码] [代码][代码]resolve(item)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]item.img.click = [代码][代码]function[代码][代码](e) {[代码][代码] [代码][代码]console.log(e)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码])[代码][代码]})[代码][代码]// 详见 http://es6.ruanyifeng.com/#docs/promise#Promise-all[代码][代码]Promise.all(promise_list).then([代码][代码]function[代码][代码](results) {[代码][代码] [代码][代码]results.forEach((item) => {[代码][代码] [代码][代码]ctx.drawImage([代码][代码] [代码][代码]item.img,[代码][代码] [代码][代码]item.x,[代码][代码] [代码][代码]item.y,[代码][代码] [代码][代码]item.width,[代码][代码] [代码][代码]item.height[代码][代码] [代码][代码])[代码][代码] [代码][代码]})[代码][代码]}).[代码][代码]catch[代码][代码]([代码][代码]function[代码][代码](reason) {[代码][代码] [代码][代码]console.log(reason)[代码][代码]});[代码]
小游戏canvas,drawImage绘制多张图片(有重叠),只能显示一张- 预期表现 微信开发者工具的表现符合预期:蓝色图片铺满屏幕,木板图片覆盖蓝色图片的部分区域 [图片] - 当前 Bug 的表现(附上截图) 手机上是这样的。。。 [图片] 运行我提供的代码,先出现全屏的蓝色图片,2秒后,蓝色图片不见了。。。只出现木板图片。 - 提供一个最简复现 Demo GameGlobal.systemInfo = wx.getSystemInfoSync(); let canvas = wx.createCanvas(); let context = canvas.getContext('2d'); let bgImage = wx.createImage(); bgImage.src = 'images/sea.jpg'; bgImage.onload = function () { context.drawImage(bgImage, 0, 0, systemInfo.screenWidth, systemInfo.screenHeight); setTimeout(function() { let battleImage = wx.createImage(); battleImage.src ='images/wood.jpg'; battleImage.onload = function() { context.drawImage(battleImage , 50,50, systemInfo.screenWidth * 0.2 , systemInfo.screenHeight * 0.2 ); }; },2000); }; - 复现路径 新建目录test。 新建目录test/images。 test/images放入jpg格式的图片,更名为sea.jpg、wood.jpg。图片大小 < 200kB。 新建test/game.js, 放入以上js代码。新建test/game.json, 写入: { "deviceOrientation": "portrait" }打开微信开发者工具,点击“编译”,运行test项目。 微信开发者工具,点击“预览”,手机打开安卓(Android 7)版微信7.0.0,扫描二维码进行预览。 经过探索后,发现:问题变成了无法指定多张有重叠的图片的覆盖顺序,详见我的评论。
2019-04-21