本站原创,欢迎转载;尊重他人劳动,转载时保留以下信息:
本文转自:360ITO技术社区
原文标题:从零开始学社交游戏开发(十)
原文地址:http://www.360ito.com/article/636.html
public static function registerClass():void { FClass[TVGDefine.ITEM_CAO_NI_MA] = TGrassMudHorse; FClass[TVGDefine.ITEM_SHEN_MA] = TGodHorse; FClass[TVGDefine.ITEM_BAO_SHI] = TGemObj; FClass[TVGDefine.ITEM_DA_BAO_SHI] = TGemObj; FClass[TVGDefine.ITEM_BOMB] = TBombObj; FClass[TVGDefine.ITEM_BOMB2] = TBombObj; FClass[TVGDefine.ITEM_CHEST] = TChestObj; FClass[TVGDefine.ITEM_ZA_CAO] = TWeedObj; FClass[TVGDefine.ITEM_SHEN_CAO] = TWeedObj; FClass[TVGDefine.ITEM_XIE_CAO] = TWeedObj; FClass[TVGDefine.ITEM_YAN_SHI] = TRockObj; FClass[TVGDefine.ITEM_GUAI_WU] = TGuaiWuObj; FClass[TVGDefine.ITEM_GUAI_WU2] = TGuaiWuObj; FClass[TVGDefine.ITEM_GUAI_WU3] = TGuaiWuObj; FClass[TVGDefine.ITEM_VILLAGER] = TVillagerObj; FClass[TVGDefine.ITEM_ARROW] = TArrowObj; }
在场景管理(SceneManager)的构造函数中调用GameSceneItemPool.registerClass方法注册单元,如下图:
public static function recycling(arg_class:Class, obj:SceneObj):void { if (FObjectDic[arg_class] == null) { FObjectDic[arg_class] = new Vector.<SceneObj>(); } FObjectDic[arg_class].push(obj); }
var objClass:Class; if (FClass[arg_type] == null) { // 按基础类构建单元 objClass = UnitObj; } else { // 按特殊类构建单元 objClass = FClass[arg_type]; }
if (FObjectDic[objClass] == null) { FObjectDic[objClass] = new Vector.<SceneObj>(); } var objects:Vector.<SceneObj> = FObjectDic[objClass]; var poolTotal:int = objects.length; var result:ISceneObj; // 缓冲区中已经有了,就弹出第一个 if (poolTotal > 0) { result = objects.pop(); result.setType(arg_type); } // 需要重新创建 else { result = new objClass(objClass, arg_type) as SceneObj; }
var mapData:Dictionary = MapData.Instance.getData(); var items:Array = DictionaryUtil.getKeys(mapData);
for each(id in items) { obj = GameSceneItemPool.create(mapData[id].FType); key = MapData.coordToKey(mapData[id].FGridX, mapData[id].FGridY); obj.setGridCoordinate(mapData[id].FGridX, mapData[id].FGridY, true); obj.addTo(this); obj.setOrder(mapData[id].FOrder); obj.setShadows(mapData[id].FShadows); obj.setFlash(mapData[id].FFlash); FObjects[key] = obj; }
FShenLiUpdateProgressbar = new ProgressBar(); FShenLiUpdateProgressbar.setContentSkin( JFDynamicResManager.getInstance().displayObjectByName(1, "res0403"), new Rectangle(0, 0, 121, 22)); FShenLiUpdateProgressbar.x = 37; FShenLiUpdateProgressbar.y = 28; FShenLiUpdateProgressbar.visible = false; FShenLiUpdateProgressbar.mouseEnabled = false; addChild(FShenLiUpdateProgressbar);
public function onUpdate():void { onUpdateShiLi(); } public function onUpdateShiLi():void { // 更新神力 FShenLiPanel.setCurValue(PlayerData.Instance.sheng_li); FShenLiPanel.setShenLiUpdateTime(PlayerData.Instance.FShenLiUpdateTime); }
共有0个评论 我要评论»
网友回复/评论仅代表其个人看法,并不表明本社区同意其观点或证实其描述。
1.不欢迎无意义的回复/评论和类似“顶”、“沙发”之类没有营养的文字
如果只是想简单的表个态,请点 有用无用支持反对 等按钮
2.发言之前请再仔细看一遍文章,或许是您遗漏、误解了,理性讨论、切莫乱喷
3.严禁发布违法、违规的信息,请勿到处招贴广告、发布软文;
4.如果您发现自己的回复/评论不见了,请参考以上3条
5.不停制造违规、垃圾信息的,账户将被禁止