目录:

一 创建第三方库

二 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中被引用。

 

Egret的第三方库制作,以及在大型项目中的应用的更多相关文章

  1. Python - 超好用的第三方库pathlib,快速获取项目中各种路径

    前言 之前曾介绍过Python的os库详细使用方式,具体可看看这篇博文:https://www.cnblogs.com/poloyy/p/12341231.html 博主在学完os库之后,就开始投入使 ...

  2. 命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用

    在学习廖老师的Python教程的时候,遇到命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用的情况, 这种情况可能是由于在本地安装了多个Python版本的缘故(只是可能的情况之一 ...

  3. SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  4. VS编译linux项目生成静态库并在另一个项目中静态链接的方法

    VS2017也推出很久了,在单位的时候写linux的服务端程序只能用vim,这让用惯了IDE的我很难受. 加上想自己撸一套linux上的轮子,决定用VS开工远程编写调试linux程序. 在window ...

  5. Egret 集成第三方库 记录

    引入第三方库pureMVC 这次我们要使用到一个mvc开发框架-pureMVC,熟悉as3的朋友一定也对这个框架不陌生吧.不熟悉的也没关系,这个框架不是这次的主角.我们从 这里 下载pureMVC的T ...

  6. UE4读取脑电波MindWave插件(展示如何使用第三方库制作UE4插件)

    MyEEGPlugin.uplugin { , , "VersionName": "1.0", "FriendlyName": " ...

  7. 分享一些自己写的前端库,并骗骗 star(库都是在实际项目中大量运用过的)

    最近一两年在一些项目上,通过实际需求出发,编写了一些库在项目中使用,现在将这些项目都稍微整理了一下开源了出来,也许也有刚好能够你也用得上的,顺便也骗一下star.均在项目的README中加了相关的说明 ...

  8. Mac下编译libpomelo静态库,并在cocos2dx项目中引用

    最近在学习cocos2dx的过程中需要和服务器进行交互,所以这几天在学习libpomelo静态库的编译和使用.之前在windows系统下编译libpomelo,并在VS中引入比较顺利:但是,目前对Ma ...

  9. 161010、在大型项目中组织CSS

    编写CSS容易. 编写可维护的CSS难. 这句话你之前可能听过100次了. 原因是CSS中的一切都默认为全局的.如果你是一个C程序员你就知道全局变量不好.如果你是任何一种程序员,你都知道隔离和可组合的 ...

随机推荐

  1. #define的一个小技巧

    /* atof example: sine calculator */ #include <stdio.h> /* printf, fgets */ #include <stdlib ...

  2. C语言蓝桥杯比赛原题和解析

    蓝桥杯:在计算机编程领域,是具有一定含金量的竞赛,用于选拔信息技术人才. 一般分为多个领域,其中包含了C/C#/C++/Java/Python等编程语言的测试题,多为算法的设计题. 下面,在搜题过程中 ...

  3. Monitor 实现阻塞队列 + 生产消费者实例

    转载至 https://www.codeproject.com/Articles/28785/Thread-synchronization-Wait-and-Pulse-demystified /* ...

  4. car二手车购买原理

    前提须知 1. Kbb,指著名的二手车估计网站 www.kbb.com .其中给出了具体年份里程车的参考价格. 2. Craigslist,简称 CL,著名的二手物品交易网站,美国的 58 同城. 3 ...

  5. 讲心情 demo1

    讲道理找了一个安心而又稳定的工作. 每天活闲的蛋疼, 这种对于老年人来说可能会很好,但是,对于一个24岁的人可能就是坟墓了. 么事呻吟一下.   爬虫这条路越来越远了. 写下今年计划吧..机器学习入下 ...

  6. 使用echarts生成海友网企业全国分布地图

    不分类别的效果 不同分类的分布效果图 从海友网获取各个企业名单保存进mysql cmfishhelper.py 从下列网址得到各个企业名片的网址保存进表cmfish cds = get_cds() h ...

  7. 自用 微信小程序跳小程序

    "window": { "navigationBarTextStyle": "black", "navigationBarTitl ...

  8. loj #10131

    抽离题意 求删除一条树边和一条非树边后将图分成不连通的两部分的方案数 对于一棵树,再加入一条边就会产生环.若只有一个环,说明只加入了一条非树边 (x, y),记 lca 为 l, 那么 对于任意一条 ...

  9. mybatis-sqlite日期类型对应关系

    1.问题 sqlite数据库 user表,create_time字段,类型DATETIME,设置默认值datetime('now') mybatis,User实体,createTime类型为java. ...

  10. SpringMVC+Spring+Mybatis简单总结

    SpringMVC+Spring+Mybatis总结 第一部分:分析 web.xml中的配置 SSM框架的整合其实是Spring和SpringMVC的整合以及Spring和Mybatis进行整合. 当 ...