cocos creator 部署微信云开发

cocos creator 部署微信云开发cocoscreator部署微信云开发

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

(这仅为小弟的学习笔记,不作为教程,如有错误请大佬指出)

cocos creator中通过调用微信的接口去获取用户授权的信息,之后云函数把用户数据保存至云数据库,再从数据库回调到cocos端处理。比如把用户头像和名称通过远程加载到cocos小游戏中使用。

在这里插入图片描述

一.登录游戏,授权用户信息:

在微信开发者中进入游戏,用户点击任意位置的时候,获取用户的授权信息。

//main.js
 onLoad() { 
   
    this.authorizationBox()
  }
  //微信授权按钮的创建,点击屏幕任意位置弹出授权框
  authorizationBox() { 
   
    if (sys.Platform.WECHAT_GAME) { 
   //如果是微信平台
      window['wx'].login({ 
   //登录游戏
        success: function (res) { 
   
          if (res.code) { 
   
            console.log('登陆成功');
          }
          //创建一个全屏的授权按钮
          let button = window['wx'].createUserInfoButton({ 
   //创建一个获取用户信息的按钮
            type: 'text',
            text: '',
            style: { 
   
              height: window['wx'].getSystemInfoSync().screenHeight,//获取屏幕的宽高
              width: window['wx'].getSystemInfoSync().screenWidth,
              backgroundColor: '#00000000',//最后两位为透明度
              color: '#ffffff',
              textAlign: 'center',
            }
          })
          button.show()    //把按钮显示出来
          button.onTap((res) => { 
             //监听按钮的点击
            if (res.errMsg === 'getUserInfo:ok') { 
   
              console.log('授权成功');
              button.destroy()
            } else { 
   
              console.log('授权失败');
            }
          })
        }
      })
    }
  }

Jetbrains全家桶1年46,售后保障稳定

效果:弹出两次授权框

在这里插入图片描述

二.初始化云环境:

把刚刚授权好的用户信息通过微信云函数保存到微信云数据库中。所以这里需要一个数据库和一个云函数。

1.初始化“cloud”云环境

在这里插入图片描述

2.创建一个微信云数据库“data”

在这里插入图片描述

3.创建“login”云函数在这里插入图片描述
4.编写”login”云函数的index.js

在这里插入图片描述

//login云函数的index.js脚本
// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()
const db = cloud.database()//引用云数据库
const userinfo = db.collection("data")//引用data数据表(刚创建的那个数据表名称)

// 云函数入口函数
exports.main = async (event, context) => { 
   
  const wxContext = cloud.getWXContext()

  //查询数据库是否已经注册
  let isHas =await userinfo.where({ 
   
    openid:wxContext.OPENID
  }).get()

  //如果没有注册
  if(isHas.data.length==0){ 
   
    let isAdd = null
    let addData = { 
   
      openid:wxContext.OPENID,
      userinfo:event.userinfo,
      due:new Date()
    }
    //把获取的数据添加到数据库
    isAdd = userinfo.add({ 
   
      data:addData,
    })
    return{ 
   
      code:'save',
      res:isAdd,
      data:addData
    }
  }
else{ 
   
  //已经注册
  return{ 
   
    code:'get',
    res:isHas.data
  }
}
  
}
5.上传部署

在这里插入图片描述
上传部署成功在这里插入图片描述

三.处理用户授权信息:

在cocos中创建一个变量存储云函数回调的用户信息,再创建一个全局函数调用云函数。

1.创建全局变量,用于保存从云端回调的用户信息
//GlobaData.js
export { 
    }
window['Globa'] = { 
   
  userInfo: null
}
2.创建全局云函数调用login
//GlobalWechat.js
export { 
    }
//调用云函数处理注册信息
window['onReisterUser'] = function (_userInfo) { 
   
  window['wx'].cloud.callFunction({ 
   
    name: "login",//云函数名字
    data: { 
   
      userinfo: _userInfo,
    },
    success(res) { 
   
      console.log('处理注册信息成功', res);
     window['Globa'].userInfo = res.result.res[0].userinfo
      console.log('获取到回调的用户信息:', window['Globa'].userInfo);
    },
    fail: console.error()
  })

}

3.在main.js授权脚本调用全局函数,对用户授权的注册信息进行处理

在这里插入图片描述

4.打包发布,在微信云开发上运行,并设置云环境(每一次构建打包都需要重新设置云环境)

在这里插入图片描述

5.上传用户数据成功,这样子在cocos中就可以获取到用户数据了,也能把用户数据存到云数据库中。

在这里插入图片描述

四.分享转发

分享有两种,一种是主动分享(wx.shareAppMessage),l另一种是右上角的被动分享(wx.showShareMenu)

这里主动分享我用微信云来存储要分享的信息,而被动分享的话把分享信息直接存在本地,存在本地比存在微信云方便,就是想练练手。

被动分享


 //share.js,被动分享(右上角分享按钮)
  passiveShare() { 
   
    if (sys.Platform.WECHAT_GAME) { 
   
      //显示当前页面转发按钮
      window['wx'].showShareMenu({ 
   
        success: (result) => { 
   
          console.log('开启被动转发成功');
        },
        fail: (res) => { 
   
          console.log('开启被动转发失败', res);
        },
      });
      //分享
      window['wx'].onShareAppMessage(() => { 
   
        let title = [//分享时候显示的标题
          '来锻炼一下左右脑协调能力吧!跟着我左脑右脑一个慢动作!',
          '你是左脑快还是右脑快呢,快来试试看把!',
          '冰墩墩邀请你一起玩钢架雪车!',
          '听说你也想拥有一个冰墩墩!',
        ]
        let rand = Math.floor(Math.random() * 4)
        return { 
   
          title: title[rand],
          imageUrl: '', //分享时候显示的图片,如果没有图片就是默认的Canvas,这里我没有添加图片
          query: '成功分享游戏'
        }
      })
    }
  }

主动分享

1.上传分享需要需要用到的图片到云存储中,这里上传两张。

图一:
在这里插入图片描述
图二:
在这里插入图片描述

2.在数据库创建两个集合保存需要分享的标题和图片

集合一:保存分享标题
在这里插入图片描述
集合二:保存分享图片

在这里插入图片描述

3.在cocos中创建一个按钮,并且调用onClickButton函数

在这里插入图片描述

//share.js
 onClickButton() { 
   
   //主动分享页面,调用getShareInfo云函数
   window['wx'].cloud.callFunction({ 
   
     name: 'getShareInfo',//调用云函数,下面步骤会写这个函数
     success(res) { 
   
       console.log('主动分享成功',res);
       let _title = res.result.title.title //由数据表传过来的数据
       let _pic = res.result.picture.url
       window['wx'].shareAppMessage({ 
   
         title: _title,
         imageUrl: _pic,
       })
     },
     fail: console.error
   })

 }
4.在微信写getShareInfo云函数,然后上传部署。
// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

//链接数据库
let db = cloud.database()
let _pic = db.collection('share_pic')
let _title = db.collection('share_title')

// 云函数入口函数
exports.main = async (event, context) => { 
   
  const wxContext = cloud.getWXContext()

  //获取数据表数据
let promise_pic = await _pic.get()
let promise_title = await _title.get()

  //把数据随机返回给调用者
return({ 
   
  title:promise_title.data[Math.floor(Math.random()*promise_title.data.length)],
  picture:promise_pic.data[Math.floor(Math.random()*promise_pic.data.length)],
  errMsg:promise_title.errMsg,
})
}
5.构建打包,点击分享按钮就可以成功!

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213615.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • lm算法的实现方法_信赖域算法

    lm算法的实现方法_信赖域算法完整文章请查看这里。转载请注明出处:本文来自learnhard的博客:http://www.codelast.com/ & http://blog.csdn.net/learnhard/,并保持文章的完整性。 LM算法可用于解决非线性最小二乘问题。多用于曲线拟合等场合。LM算法的实现并不难,这里不讨论使用MATLAB等工具直接得到结果的过程,使用那些工具对于算法编程能力的提高无任何益处。 LM算法

    2022年9月27日
    4
  • 弗曼学习方法-终极快速学习方法

    弗曼学习方法-终极快速学习方法FEYNMANTECHNIQUE学习方法

    2022年6月10日
    30
  • Java线程同步:synchronized锁住的是代码还是对象

    Java线程同步:synchronized锁住的是代码还是对象在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。Synchronized既可以对代码块使用,也可以加在整个方法上。 关键是,不要认为给方法或者代码段加上synchronized就万事大吉,看下面一段代码:classSync{ publicsynchronizedvoidtest

    2022年7月15日
    19
  • MySQL——删除索引

    MySQL——删除索引1 nbsp 使用 nbsp ALTER nbsp TABLE nbsp 语句删除索引 nbsp nbsp 语法格式 nbsp nbsp ALTER nbsp TABLE nbsp table name nbsp nbsp DROP nbsp INDEX nbsp index name 例 删除 nbsp score nbsp 表中的名为 nbsp id nbsp 的普通索引 首先查看 nbsp score nbsp 表 Table CreateTable

    2025年11月23日
    6
  • 计算机病毒论文结束语,计算机病毒论文结束语

    计算机病毒论文结束语,计算机病毒论文结束语计算机病毒论文结束语此频道包含与结束语和计算机和病毒相关的例文,免费给你写作计算机病毒论文总结提供有关参考文献资料。摘要:计算机是现代办公、学习的重要工具之一。对于高等院校来讲,计算机在日常教学和学生管理中都占有非常重要的地位,起到了重要的作用。不论是校园网。摘要:本研究计算机病毒的历史入手,介绍了病毒的种类、特点和工作原理,并对病毒的查杀和防范方法做了介绍。当前,计算机网络技术有着飞速的发展。…

    2022年5月4日
    47
  • EAX、ECX、EDX、EBX等寄存器的作用

    EAX、ECX、EDX、EBX等寄存器的作用EAX ECX EDX EBX 等寄存器的作用 一般寄存器 AX BX CX DXAX 累积暂存器 BX 基底暂存器 CX 计数暂存器 DX 资料暂存器 索引暂存器 SI DISI 来源索引暂存器 DI 目的索引暂存器 堆叠 基底暂存器 SP BPSP 堆叠指标暂存器 BP 基底指标暂存器 EAX ECX EDX EBX 是 ax bx cx dx 的延伸 各为

    2025年6月29日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号