背景
解决思路
- 查了一些资料,大部分都是针对 cocos2d-x 的
- 有一篇文章 写的是 html 版本的方法,但我需要的是纯 js 版的,因为我们项目最后会用通过 jsb 导出为个平台原生项目,而不是网页应用,pass
- 不过看了上面的内容还是受到了一些启发的,比如,二维码不过是一张图片,我只要可以生成二维码的图片,然后放到界面上不就可以了(废话)
- 有了思路其实就简单了,生成 base64 编码的二维码图片,用这些编码初始化 Sprite,加入 layer,搞定
具体步骤
- 从 这里 下载生成二维码的库文件
- 将
jrQrcode-master/dist
里面的两个文件引入到 cocos2d-js 项目中 -
var qrData = jrQrcode.getQrBase64("中文 english 1232 : k,",{ padding: 35,width: 350,height: 350,correctLevel: QRErrorCorrectLevel.L }); cc.loader.loadImg(qrData,{isCrossOrigin: false},function (err,img) { var texture2d = new cc.Texture2D(); texture2d.initWithElement(img); texture2d.handleLoadedTexture(); var qrImg = new cc.Sprite(texture2d); qrImg.setScale(cc.contentScaleFactor()); qrImg.x = cc.visibleRect.center.x; qrImg.y = cc.visibleRect.center.y; myLayer.addChild(qrImg); // myLayer 就是你要添加的二维码的 layer });
- 大功告成
总结
这个问题复杂就复杂在二维码要求是动态的,如果是一个普通的扫码下载什么的,直接弄一张图片,然后在界面上添加 Sprite 即可。
如果有需要的同学,可以根据自己的需求选择。