zoukankan      html  css  js  c++  java
  • Egret的第三方库制作,以及在大型项目中的应用

     

    目录:

    一 创建第三方库

    二 TypeScript库

    三 JavaScript库

    四 第三方库制作在大型RPG中的实际应用

    参考:

    第三方库的使用方法

    目标:

    本文目的是将现有游戏的框架制作成第三方库,减少编译时间。不想让别人看到源码,降低可读性。

    一 创建第三方库

    在任意文件夹,我这里创建个test文件夹,shift+右键,打开命令行窗口,输入

    egret create_lib demo
    

     在test文件夹下会生成一个demo文件夹,里面有package.json和tsconfig.json文件

    在demo文件夹里新建src,bin,typings,libs文件夹。

     二 TypeScript库

    该方法是使用.ts文件制作第三方库

    将ts文件放到src文件夹下,这里我用了框架用的几个管理类。场景管理,图层管理,事件管理类等作为测试。

     修改pagckage.json

    {
    	"name": "demo",              
    	"compilerVersion": "5.2.22"  
    }
    

      

    修改tsconfig.json文件

    {
    	"compilerOptions": {
    		"target": "es5",
    		"noImplicitAny": false,
    		"sourceMap": false,
    		"declaration": true,   //是否生成.d.ts文件,如果是typescript库设置为true,如果是javascript库设置为false
    		"outFile": "bin/demo.js",
    		"allowJs": false       //是否允许编译js文件。如果是typescript库设置为false,如果是javascript库设置为true
    	},
    	"files": [                     //libs为依赖的egret库,用.d.ts文件即可,因为管理类中使用了eui, egret.Stage等。
    		"libs/egret.d.ts",
    		"libs/eui.d.ts",
    		"src/BaseSingleClass.ts",
    		"src/LayerManager.ts",
    		"src/EventManager.ts",
    		"src/BaseScene.ts",
    		"src/SceneManager.ts"
    	]
    }
    

    直接用include代替files也可以

    {
    	"compilerOptions": {
    		"target": "es5",
    		"noImplicitAny": false,
    		"sourceMap": false,
    		"declaration": true,
    		"outFile": "bin/demo.js",
    		"allowJs": false
    	},
    	
    	"include":["src","libs"]
    }
    

      

    命令行输入

    egret build demo
    

    在bin文件夹中生成了如下文件

    新建一个Egret项目,名为project,来使用这个第三方库

     修改项目的egretProperties.json文件,增加第三方库的引用,并编译一次引擎。

    在代码中使用我自己写的EventManager事件类,成功输出"触发事件"。表示第三方库可以正常使用了。

        protected createGameScene(): void {
            EventMananger.getInstance().addEvent("test", this.onTestHandler, this);  //监听test事件
            EventMananger.getInstance().sendEvent("test");                           //派发test事件
        }
    
        public onTestHandler(){
            console.log("触发事件");  //打印触发事件
        }
    

      

     三 JavaScript库

    该方法是将.js文件制作成第三方库

    这里我们直接使用上文中导出的demo.js和demo.d.ts做为例子

    将demo.js放到src目录下

    将demo.d.ts放到typings目录下

    修改package.json文件

    {
    	"name": "demo222",
    	"compilerVersion": "5.2.22",
    	"typings":"typings/demo.d.ts"
    }
    

      

     修改tsconfig.json文件

    {
    	"compilerOptions": {
    		"target": "es5",
    		"noImplicitAny": false,
    		"sourceMap": false,
    		"declaration": false,       //false  不生成.d.ts文件
    		"outFile": "bin/demo.js",   
    		"allowJs": true             //true  允许编译js文件
    	},
    	
    	"include":["src","libs"]
    }
    

      

     命令行输入

    egret build demo
    

     

    bin文件夹下生成

     

     第三方库使用方法同上文,这里不再说了。

    四 第三方库制作在大型RPG中的实际应用

    这里我找了个传奇游戏的源码,因为源码比较早,所以它的第三方库的制作是旧版。但是原理还是一样的,我们看一下第三方库的制作在大型rpg中的应用。

    项目中,游戏每一个模块modules,都被制作成了一个第三方库,如下图:

     第三方库制作后,.d.ts和js和min.js文件被放在了libs目录下,并在index.html中被引用。

     

  • 相关阅读:
    阅读随笔
    四则运算生成器基础版
    《梦断代码》阅读计划
    JavaScript值传递和引用传递
    nodejs包高效升级插件npm-check-updates
    JavaScript常用技巧之进制转换
    js 数组、字符串、Json互相转换
    利用Stream模式进行文件拷贝
    ACM-ICPC 2018 焦作赛区网络预赛 H、L
    ACM-ICPC 2018 沈阳赛区网络预赛 G 容斥原理
  • 原文地址:https://www.cnblogs.com/gamedaybyday/p/11300853.html
Copyright © 2011-2022 走看看