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

Egret的第三方库制作,以及在大型项目中的应用的更多相关文章
- Python - 超好用的第三方库pathlib,快速获取项目中各种路径
前言 之前曾介绍过Python的os库详细使用方式,具体可看看这篇博文:https://www.cnblogs.com/poloyy/p/12341231.html 博主在学完os库之后,就开始投入使 ...
- 命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用
在学习廖老师的Python教程的时候,遇到命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用的情况, 这种情况可能是由于在本地安装了多个Python版本的缘故(只是可能的情况之一 ...
- SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
- VS编译linux项目生成静态库并在另一个项目中静态链接的方法
VS2017也推出很久了,在单位的时候写linux的服务端程序只能用vim,这让用惯了IDE的我很难受. 加上想自己撸一套linux上的轮子,决定用VS开工远程编写调试linux程序. 在window ...
- Egret 集成第三方库 记录
引入第三方库pureMVC 这次我们要使用到一个mvc开发框架-pureMVC,熟悉as3的朋友一定也对这个框架不陌生吧.不熟悉的也没关系,这个框架不是这次的主角.我们从 这里 下载pureMVC的T ...
- UE4读取脑电波MindWave插件(展示如何使用第三方库制作UE4插件)
MyEEGPlugin.uplugin { , , "VersionName": "1.0", "FriendlyName": " ...
- 分享一些自己写的前端库,并骗骗 star(库都是在实际项目中大量运用过的)
最近一两年在一些项目上,通过实际需求出发,编写了一些库在项目中使用,现在将这些项目都稍微整理了一下开源了出来,也许也有刚好能够你也用得上的,顺便也骗一下star.均在项目的README中加了相关的说明 ...
- Mac下编译libpomelo静态库,并在cocos2dx项目中引用
最近在学习cocos2dx的过程中需要和服务器进行交互,所以这几天在学习libpomelo静态库的编译和使用.之前在windows系统下编译libpomelo,并在VS中引入比较顺利:但是,目前对Ma ...
- 161010、在大型项目中组织CSS
编写CSS容易. 编写可维护的CSS难. 这句话你之前可能听过100次了. 原因是CSS中的一切都默认为全局的.如果你是一个C程序员你就知道全局变量不好.如果你是任何一种程序员,你都知道隔离和可组合的 ...
随机推荐
- wamp——添加多版本PHP
前言 从下载到部署,手把手教学~ wamp 版本 | 3.0.4 32位 步骤 下载PHP 进入网站https://windows.php.net/download然后选择想要的版本下载 注意点: . ...
- matlat保存矩阵数据
a=[1 2 3; 4 5 6]; fid = fopen('haha.txt', 'w+');fprintf(fid,'%8.4f %8.3f %d\n', a');fclose(fid); typ ...
- java中split函数参数特殊字符的处理(转义),如:"." 、"\"、"|"
内容介绍 本文主要介绍java中特殊字符做为split函数的参数,如:"." ."\"."|",双引号等,不能正确分隔源字符串的处理方法. ...
- Linux 使用shell脚本实现自动SSH互信功能
说假设有一个1000台节点的Hadoop集群,要配置节点之间的SSH免密码登录,该如何用shell脚本实现?#!/bin/expect #循环1000台机器的IP地址,生成密钥文件authorized ...
- phpize是干嘛的
安装php(fastcgi模式)的时候,常常有这样一句命令:/usr/local/webserver/php/bin/phpize一.phpize是干嘛的?phpize是什么东西呢?php官方的说明: ...
- 学校的信息课(备战会考)LZ没带笔……
IP地址 四段十进制数组成(四个字节,32个二进制位数,一个字节八位) 用“.”隔开 每一段的取值范围[0,255] 分类:看第一个字节(见到的大多为B,C类) A:1~126 B:128~19 ...
- Cogs 56. 质数取石子(博弈)
质数取石子 ★★ 输入文件:stonegame.in 输出文件:stonegame.out 简单对比 时间限制:1 s 内存限制:128 MB 问题描述 DD 和 MM 正在玩取石子游戏.他们的游戏规 ...
- 【数论】P1029 最大公约数和最小公倍数问题
题目链接 P1029 最大公约数和最小公倍数问题 思路 如果有两个数a和b,他们的gcd(a,b)和lcm(a,b)的乘积就等于ab. 也就是: ab=gcd(a,b)*lcm(a,b) 那么,接下来 ...
- [Shell]Telnet反弹shell
原作者:包子love 文章出处:黑白之道 今天给大家介绍两种telnet反弹shell的方法,相对于其他方式反弹shell要简单一点,可作为按需远程控制或留后门使用,希望可以帮助到大家. 前提条件:目 ...
- vxlan和macvlan操作
vxlan: 192.168.1.112 ———— 192.168.1.108 —— 192.168.1.109192.168.1.112配置:docker run -d -p 8500:8500 - ...