达叔的游戏框架(二) 得到其他模块的方式

你是背包模块 想得到技能模块
怎么做?
以下是常见的三种方式
一 每个模块都用单例 用的时候自己 getInstance()
二 提前注册 然后根据字符串得到相应模块 类似puremvc
三 在框架里写一些特殊字符 类似robotlegs spring
个人以为这些都太麻烦 要手写很多代码
我的做法是 约定大于配置
在MyGameInit里注册session的时候
系统会默认给你个字符串key
这个key就是你的类名第一个字母小写
比如 ShopSession 的 key 就是 shopSession

然后在背包模块里 你只要声明一个属性 var shopSession:ShopSession;
系统会自动给你赋值
你压根不需要考虑去哪拿这个模块
节省了很多代码 超级方便

但是仅限于在session模块里 如果是其他模块需要手动调用一下injOne
/** 给obj对象的所有属性注入 */
public static function injOne(obj:Object):void {
for (var str:String in obj) {
if( obj[str] == null && injMap[str] ){
obj[str] = injMap[str];
}
}
}
其实原理很简单 就是遍历所有属性
符合要求的赋值即可
有同学担心性能问题
其实不可不必
session在游戏初始化的时候就赋值好了

猜你喜欢

转载自blog.csdn.net/qq_38913715/article/details/87841489