360ITO技术社区
  • 首页
  • 文章
  • 快讯
  • 讨论
  • 问答
  • 小贴士
  • 代码块
  • 开源
  • 老论坛
登录 | 注册

360ITO技术社区  > 文章

订阅文章

从零开始学社交游戏开发(五)

smallghost 发布于 7年前 ( comment 0条评论  查看:5603  收藏:0 )

LOGO窗口显示出来,我们接下来需要加载游戏里需要的一些数据(配置、美术资源、音乐音效等等……)

我们前面已经计算好了整个游戏启动完成需要的步骤,分为下面几个:
  1、配置数据
  2、美术资源
  3、游戏模块
  4、场景渲染
  5、进入场景

配置数据:

    ※语言配置 language.json 
      所有游戏中出现的文字都放在这个配置中,这样要支持多语言就只要改这个文件就可以了。

     下面这几个配置来以后用到的时候再深入讲解:
    ※道具配置 props.json
      游戏中道具属性配置。
    ※建筑配置 unit.json
      游戏中所有建筑的属性配置。
    ※分享配置 feed_cfg.json
      在朋友网中分享的相关配置。
    ※向导配置guid_info.json
      新手教程相关配置。
    ※在线奖励配置 online_gift_cfg.json
      玩家在线奖励相关配置。
    ※任务奖励配置 target_gift_cfg.json
      任务完成奖励相关配置。

    



美术资源:

  美术资源分为两个部分:

   1、 基础资源
     基础资源在游戏启动的时候就都加载好了。

     

  2、建筑动画资源

     这些资源往往数据量比较大,所以在需要的时候才加载。程序里按事先规定好个规则去寻找资源(以后会详细讲解)


游戏模块:

  将模块VillageGodModule编译后,在plugin目录下就会产生一个VillageGodModule.swf文件,在系统配置文件的plugin中对其进行配置,如下图:

  




下面开始写代码,从加载配置开始处理:
1、加载配置


  private function load_cfgs():void {
            var loader:URLLoader = new URLLoader();
            loader.addEventListener(Event.COMPLETE, loadCfgsComplete);
            loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            var url:String = cfg.sysCfg.config[cfg_load_index].url + "?" + "v=" + JFAppConfig._version;
            loader.load(new URLRequest(url));
        }



在load_cfgs方法中URL参数总带了一个版本号(v = JFAppConfig._version),这样做主要是为了防止数据被缓冲,在版本号改变后,可以确保配置文件重新从服务器上下载。

这本版本号的在系统配置文件中有定义,如下图:

注:我们暂时就处理一下language,其他的以后再考虑。


配置加载完成后,需要将数据保存起来,代码如下:


       private function loadCfgsComplete(event:Event):void {
            cur_load_step += 1;

            switch (cfg.sysCfg.config[cfg_load_index].name) {
                case LANGUAGE_CFG_NAME: {
                    LanguageCn.getInstance().setLanguages(JSON.decode(URLLoader(event.target).data));
                    break;
                }
                default:
                {
                    JFLog.outError("cfg data is not proc: name:" + cfg.sysCfg.config[cfg_load_index].name);
                    break;
                }
            }
            cfg_load_index += 1;

            // 装载配置完成,开始装载资源
            if (cfg_load_index == cfg.sysCfg.config.length) {

            }

            // 还有其他配置需要加载,继续加载下一个配置
            else {
                load_cfgs();
                logoDlg.setProgress(LanguageCn.getInstance().getStr(10000), cur_load_step / total_load_step);
            }
        }


  从上面这段代码中可以看出,我们已经语言配置保存在了LanguageCn类中,这里简单介绍一下LanguageCn中的,首先看看他的接口定义:



    public interface ILanguageCn {
        function setLanguages(strs_:Array):void;
        function getStr(id_:int):String;
}




  从接口中可以看出我们只要使用getStr方法来获取指定ID的文字串。这个ID就是对应配置中的ID,如下图:


  

  



2、 加载美术资源:
  在所有配置结束的地方加入美术资源加载代码:

  


for (var i:int = 0; i < cfg.sysCfg.res.length; i++) {
	JFDynamicResManager.getInstance().register(cfg.sysCfg.res[i].id, cfg.sysCfg.res[i].url, cfg.sysCfg.res[i].size);
}
JFDynamicResManager.getInstance().loadRes(OnResLoadComplete);


private function OnResLoadComplete(cur_:int, total_:int):void {
cur_load_step += 1;
	if (cur_ == total_ - 1) { 
			// 资源加载完成
	} else {
			// 继续下一个加载 
        	logoDlg.setProgress(LanguageCn.getInstance().getStr(10001), cur_load_step / total_load_step);
	}
}



3、加载游戏模块


  在OnResLoadComplete方法中加入下面游戏模块的代码:


// 获取村神模块相关配置
var vgModuleCfg:Object = config.cfg.getPluginById(config.cfg.VG_MODULE_ID);
// 开始装载模块
PluginManager.getInstance().loadModule(cfg.VG_MODULE_ID, vgModuleCfg.url, vgModuleCfg.size, loadVGModuleComplete);


  config.cfg.VG_MODULE_ID 是一个常量,值和配置里的一样,如下图:

  

  接下来需要修改一下VillageGodModule模块:
    ※添加接口IVillageGodModule代码如下:


package {
    public interface IVillageGodModule {
        function OnProc(Msg_:int, WParam:Object = null, LParam:Object = null):Object;
    }
}


    效果图:

    


     ※IVillageGodModule接口实现:

    VillageGodModule是从PluginBasic派生出来的一个类,PluginBasic其实很简单,里面就一个OnProc方法,这个方法用来处理来自外部发送来的一些消息。


 public class VillageGodModule  extends PluginBasic implements IVillageGodModule {
        public static var theModule:IVillageGodModule;
        public function VillageGodModule() {
            var id:int;
            if (theModule != null) {
                JFLog.outError("module is init!");
                return;
            } else {
                id = cfg.VG_MODULE_ID;
            }
            super(id);
            theModule = this;
        }
    }





4、开始初始化场景


   ※向插件发送初始化场景消息:

    

_VillageGodPlugin.OnProc(TVGDefine.INIT_SCENE, initSceneComplete);


   ※插件里处理初始化场景消息:

 override public function OnProc(Msg_:int, WParam:Object = null, LParam:Object = null):Object {
            switch (Msg_) {
                case TVGDefine.INIT_SCENE: {
                    FInitSceneCompleteNotify = WParam as Function;
                    // 初始化场景
                    onInitScene();
                    break;
                }
            }
            return null;

        }



5、进入场景

  ※向插件发送进入场景消息:

  

_VillageGodPlugin.OnProc(TVGDefine.INTO_SCENE, sceneEnterComplete);


  ※插件里处理进入场景消息:


override public function OnProc(Msg_:int, WParam:Object = null, LParam:Object = null):Object {
            switch (Msg_) {
                case TVGDefine.INTO_SCENE: {
                    FIntoCompleteNotify = WParam as Function;
                    // 进入游戏场景
                    onIntoScene();
                    break;
                }
            }
            return null;
        }


今天先到这里,可爱的小猪在往前跑,插件也装载了…,呵呵呵!给个效果图纪念一下:

代码下载:点这里下载



从零开始学社交游戏开发(一)

从零开始学社交游戏开发(二)

从零开始学社交游戏开发(三)

从零开始学社交游戏开发(四)


0 有用 0 无用
本站原创,欢迎转载;尊重他人劳动,转载时保留以下信息:
本文转自:360ITO技术社区
原文标题:从零开始学社交游戏开发(五)
原文地址:http://www.360ito.com/article/428.html
360ito.com
Flash

共有0个评论 我要评论»

按时间排 按有用数排 按支持数排

网友回复/评论仅代表其个人看法,并不表明本社区同意其观点或证实其描述。

请尽量让自己的回复能够对别人有帮助

1.不欢迎无意义的回复/评论和类似“顶”、“沙发”之类没有营养的文字
如果只是想简单的表个态,请点 有用无用支持反对 等按钮
2.发言之前请再仔细看一遍文章,或许是您遗漏、误解了,理性讨论、切莫乱喷
3.严禁发布违法、违规的信息,请勿到处招贴广告、发布软文;
4.如果您发现自己的回复/评论不见了,请参考以上3条
5.不停制造违规、垃圾信息的,账户将被禁止

热门标签

  • android 20
  • Flash 15
  • Linux 12
  • 游戏 12
  • Python 11
  • 工作笔记 11
  • 社交游戏 7
  • delphi 5
  • jquery 5
  • git 4
  • Centos 4
  • 编程 4
  • 谷歌 4
  • 开发者 3
  • C/C++ 3
  • JavaScript 3
  • 移动互联网 2
  • HTML5 2
  • uWSGI 2
  • 网站 2

相关文章

周热点

月热点

  • 3周前qifei233333333333 (189)
  • 2周前qifei233333333333 (149)
  • 1周前qifei233333333333 (78)
Copyright ©2011-2012 360ITO技术社区 All Rights Reserved. | 关于 | 联系我们 | 杭州精创信息技术有限公司 浙ICP备09019653号-26|
▲