cocos小游戏开发总结

news/2024/11/28 9:44:55/

最近接到一个任务要开发消消乐小游戏,当然首先就想到乐cocosCreator来作为开发工具。 开发本身倒没有多少难点。消消乐的开发官网发行的书上有专门讲到。下面主要总结一下开发中遇到的问题以及解决方法

屏幕适配

由于设计尺寸是750*1336,如果适应高度,则在iphonX下,内容会超出屏幕宽度。按宽适应,iphon4下内容会超出屏幕高度。所以就需要根据屏幕比例来动态设置适配策略。

 onLoad() {var canvas = this.canvasvar designResolution = canvas.designResolutionvar viewSize = cc.view.getFrameSize()if (viewSize.width/viewSize.height > designResolution.width/designResolution.height){canvas.fitHeight = true}else{canvas.fitWidth = true}}
复制代码

显示微信头像

由于微信头像显示涉及到跨域问题,所以我在我们游戏所在服务器上用nginx设置了反向代理来解决跨域问题,并把获取到的微信头像地址域名替换成服务器所在域名

 let url = userObj.headimgurl.replace('http://thirdwx.qlogo.cn','我们的服务器域名');cc.loader.load({ url, type: 'png' }, (err, res) => {Message.hide();this.node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(res);});
复制代码

生成二维码

由于要根据动态地址生成二维码这里用到QR.js+graphics来实现。首先引入QR.js(npm上可以找到)并设置为插件引入。 在所在节点上添加Graphics。然后用如下代码生成二维码

//生成二维码createrQR() {const urlString = 'http://xxxxxx';const graphics = this.qrNode.getComponent(cc.Graphics);// returngraphics.clear();//背景色graphics.fillColor = cc.Color.WHITE;//let rect = this.node.getBoundingBox();let width = this.qrNode.width;graphics.rect(0 - width * 0.5, 0 - width * 0.5, width, width);graphics.fill();graphics.close();//生成二维码数据let qrcode = new QRCode(-1, 2);qrcode.addData(urlString);qrcode.make();graphics.fillColor = cc.Color.BLACK;let size = width - 10 * 2;let num = qrcode.getModuleCount();let tileW = size / num;let tileH = size / num;let w = Math.ceil(tileW);let h = Math.ceil(tileH);for (let row = 0; row < num; row++) {for (let col = 0; col < num; col++) {if (qrcode.isDark(row, col)) {graphics.rect(10 + col * tileW - width * 0.5, size - tileH - Math.round(row * tileH) + 10 - width * 0.5, w, h);graphics.fill();}}}}
复制代码

截取屏幕

//截屏capture() {cc.director.on(cc.Director.EVENT_AFTER_DRAW, this.callback.bind(this));}callback() {let canvas = document.getElementById("GameCanvas") as HTMLCanvasElement;let baseUrl = canvas.toDataURL("imagea/png");cc.director.off(cc.Director.EVENT_AFTER_DRAW);this.showImgDiv(baseUrl)}
复制代码

开关背景音乐

在初始场景上添加一个节点,节点的层级要比场景的canvas高才能看的到音乐图标。然后在节点上添加一个Sprite,把音乐图标加入上面。在该节点上添加如下代码将该节点设置为常驻节点,并控制其播放暂停。

@ccclass
export default class NewClass extends cc.Component {@property({type: cc.AudioClip})bgAudio: cc.AudioClip;audioid;playState: boolean = true;action;onEnable() {cc.game.addPersistRootNode(this.node);this.autoAudioPlay();}autoAudioPlay = () => {if(typeof this.audioid ==="undefined"){this.audioid = cc.audioEngine.play(this.bgAudio, true, 1)}this.action = cc.repeatForever(cc.rotateBy(3, 360));this.node.runAction(this.action);}playSwitch = () => {console.log(this.playState)if (this.playState) {this.playState = false;// 停止一个动作this.node.stopAction(this.action);cc.audioEngine.pause(this.audioid)} else {this.playState = true;// 执行动作this.node.runAction(this.action);cc.audioEngine.resume(this.audioid);}}onDestroy() {}
}
复制代码

转载于:https://juejin.im/post/5ceb6f52e51d4576bc1a0d76


http://www.ppmy.cn/news/360295.html

相关文章

使用 SpringBoot 构建一个RESTful API

文章目录 背景创建 SpringBoot 项目/模块SpringBoot pom.xmlapi pom.xml 创建 RESTful API 应用SpringBootApplicationConfigurationEnableAutoConfigurationComponentScan SpringApplication.run Rest ControllerRestControllerRequestMapping Get/Post/Put/Patch/DeleteGetGe…

穿靴子的猫之萌猫三剑客

转载于:https://www.cnblogs.com/bigweb/p/5455493.html

python复习---序列(字符串)(高能萌猫请注意)

题外话 嘤嘤嘤 就在昨天 家里忽然来了一位喵星人 而且我也成功的荣升成了一位铲屎官 为了纪念这一伟大而特殊的日子 作为一个一心想成为优秀程序员的girl怎么能不写一篇博客庆祝一下呢 萌图预警 好了不打扰主子睡觉了 上代码 今天要写的是一个如下所示的字符串序列&#xf…

“萌猫做料理”播放量超700万,快手宠物背后的千亿市场正等待发掘!

随着吸猫、撸狗风潮的不断盛行&#xff0c;近年来&#xff0c;养宠群体加速扩大&#xff0c;宠物经济持续增长&#xff0c;以“宠物”为中心的生产服务应运而生。 面对“宠物热潮”&#xff0c;各大内容平台均加大了对宠物内容的资源倾斜&#xff0c;像抖音、快手、B站、小红书…

Linux虚拟机CentOS7挂机问题

主要命令&#xff1a; vim /etc/selinux/config setenforce 0 现在是挂不了机状态&#xff0c;如图&#xff1a; 输入如下命令&#xff1a; 即可正常挂机了&#xff1a;

锁java

synchronized 底层实现原理 线程在获取锁的时候&#xff0c;其指针指向的是一个monitor对象&#xff08;由C实现&#xff09;的起始地址。每个对象实例都会有一个 monitor。其中monitor可以与对象一起创建、销毁&#xff1b;亦或者当线程试图获取对象锁时自动生成。而monitor是…

java 锁

目录 一&#xff0c;对象头 1&#xff0c;Mark Word 2&#xff0c;指向类的指针 3&#xff0c;数组长度 二&#xff0c;实例数据 三&#xff0c;对齐填充字节 Java对象保存在内存中时&#xff0c;由以下三部分组成&#xff1a; 1&#xff0c;对象头 2&#xff0c;实例…

[Java]锁

锁 GO&#xff01; 乐观锁悲观锁自旋锁原理自旋锁优缺点优点缺点自旋锁时间阈值(1.6 引入了适应性自旋锁)自旋锁的开启 Synchronized 同步锁Synchronized作用范围Synchronized核心组件Synchronized实现JDK1.6后的优化 ReentrantLockLock接口主要方法tryLock 和 lock 和 lockInt…