LollipopCreator:AvatarManager
LollipopCreator游戏框架
游戏客户端开发中,由于制作人或者策划立项的不同,导致前端开发并不像后端框架不变,例如 2D游戏开发,引擎选择就比较多,Unity、cocos、 白鹭等都可以,本系列就是给大家开源一套cocos creator引擎开发的2D游戏框架LollipopGo。 creator 系统为例,给大家梳理下前端2D游戏架构的基础设计思想。
Index
返回首页
如何设计
调用流程
实例代码
如何设计
1. 工程中的头像资源管理,包括头像资源的加载等
调用流程
例子:
load() {
cc.loader.loadResDir('Base/data/ABhead', cc.SpriteFrame, (err, assets) => {
if (err) {
return cc.error(err)
}
assets.forEach((it) => {
this.staticHead[it.name] = it
})
})
}
注意点:资源位置Base/data/ABhead,其中ABhead目录是可以换成自己的目录的
实例代码
'use strict'
class AvatarManager {
constructor() {
this.textures = {}
this.staticHead = {}
}
load() {
cc.loader.loadResDir('Base/data/ABhead', cc.SpriteFrame, (err, assets) => {
if (err) {
return cc.error(err)
}
assets.forEach((it) => {
this.staticHead[it.name] = it
})
})
}
getHeadImgByIdx(idx) {
// return this.staticHead[`tx_${idx + 1}`]
if (idx == 0)
idx = 1;
return this.staticHead[`tx_${idx}`]
}
setByTex(node, tex) {
let sp = node.getComponent(cc.Sprite)
sp.spriteFrame = new cc.SpriteFrame(tex)
// node.width = node.width
// node.height = node.height
}
setByURL(node, url) {
// if (!cc.sys.isNative || !url) {
let sp = node.getComponent(cc.Sprite)
// sp.spriteFrame = null
sp.spriteFrame = this.getHeadImgByIdx(url);
// 读取网络的数据
if (!url) {
return
}
if (this.textures[url]) {
this.setByTex(node, this.textures[url])
} else {
cc.loader.load({ url: url, type: "jpg" }, (err, tex) => {
if (err) {
return cc.log('setByURL fail to load ', url)
}
this.textures[url] = tex
this.setByTex(node, tex)
})
}
}
}
window.avatarMgr = new AvatarManager