Egret之自定义类库(一)
admin
2023-02-17 15:00:11
0

(Egret旧版  4.0.1以下建议这么写)今天写了一个属性绑定的类库.

步骤如下 :

一 , 新建一个EUI项目,删除Main.ts文件

Egret之自定义类库(一)

二 , 发布项目

Egret之自定义类库(一)

三 , 新建库项目(bind) egret create_lib bind

Egret之自定义类库(一)

得到库项目结构

Egret之自定义类库(一)

四,手写bind.d.ts文件为bind.js如下:

declare module bind{
	/**
     * 绑定的数据接口( CallBack的参数 )
     * @author Aonaufly
	 */
	interface IBindEventData{
		/**旧值*/
		$oldValue? : T;
		/**新值*/
		$newValue : T;
	}
}

declare module bind{
	 /**
     * 所有绑定Model的基类
     * @author Aonaufly
     */
	abstract class BaseBindModel extends egret.EventDispatcher{
		/**
         * 发布变化的数据
         * @param {string} $attribute_name 属性
         * @param {string} $field_name 对应的字段
         * @param {T} $value 数值
         */
		changeValue($attribute_name : string , $field_name : string , $value : T):void;
	}
}

declare module bind{
	 /**
     * 绑定属性订阅者(用后请销毁)
     * @author Aonaufly
     */
	class Bind2Subscriber{
		 /**
         * 销毁绑定释放资源
         */
		destory() : void;
	}
}

declare module bind{
    /**
     * 绑定工具类
     * @author Aonaufly
     */
	class BindTool{
		 /**
         * 属性绑定变换
         * @param {any} $v2Class View层Class
         * @param {string} $v2Attribute View层属性
         * @param {BaseBindModel} $d2Class Model层Class
         * @param {string} $d2Attribute Model层属性
         * @param {boolean} $isFirst 是否首次更新数值
         * @returns {bind.Bind2Subscriber}
         */
		static bindProperty( $v2Class : any , $v2Attribute : string , $d2Class : BaseBindModel , $d2Attribute : string , $isFirst? : boolean ) : Bind2Subscriber;
		 /**
         * 设置回调方法绑定
         * @param {Function} $callBack View层回调方法
         * @param $d2Class Model层Class
         * @param {string} $d2Attribute Model层属性
         * @param {boolean} $isFirst 是否首次更新数值
         * @returns {bind.Bind2Subscriber}
         */
		static bindCallBack( $callBack : Function , $d2Class : BaseBindModel , $d2Attribute : string , $isFirst? : boolean ) : Bind2Subscriber;
	}
}

五,在库项目src中加入 bind.js和bind.d.js

Egret之自定义类库(一)

六,在库项目libs加入依赖的d.ts文件

Egret之自定义类库(一)

七,编写package.json如下

{
	"name": "egret",
	"version": "3.2.4",
	"modules": [
		{
			"name": "bind",
			"description": "bind",
			"files": [
				"bind.js",
				"bind.d.ts"
			],
			"root": "src"
		}
	]
}

八,编译库项目

Egret之自定义类库(一)

九,引入到Egret项目中并使用(将bind自定义类库放在与egret项目平级的目录上)

引入(egretProperties.json):

Egret之自定义类库(一)

命令 egret build -e 后,第三方类库应用成功

Egret之自定义类库(一)


.................................完毕(可完美使用)

相关内容

热门资讯

菲律宾,没有以色列的命,得了以... 菲律宾,马尼拉。美国国务卿鲁比奥来了。菲律宾期盼已久的“救星”来了。菲律宾认为的“阳光”来了。从机场...
服务器盛会东莞启幕,松山湖软硬... 7月23日至24日,“智算筑基 融链共赢——2026年服务器产业供需对接活动”在东莞举行。作为系列配...
面向6G通信、高端安检、精准医... 太赫兹作为“电磁波段最后一块未开垦之地”,近年在超快光电子、低尺度半导体技术的推动下,逐步从实验室走...
获得全球最高奖项的中国数学家,... 一个喜欢玩梗的二次元大佬,竟然站上了数学界最高荣誉的领奖台。他就是今年的菲尔兹奖得主之一,邓煜。另一...
单向空间杭州旗舰店8年后谢幕,... 去年12月,单向空间杭州乐堤港店员工回应闭店谣言,称“没有收到任何闭店通知”。不到一年,停止营业的消...
带娃家长刷不到下铺,算法不该把... 据新华社的报道,一位宝妈带4岁娃要从昭通去杭州南,在12306上购票时反复被分到上铺,一天内取消三次...
安徽一高标准农田电机出水异常,... 近日,安徽省淮北市濉溪县百善镇丁楼村村民向《都市现场》爆料称:村里2023年建成的高标准农田配套电机...
河北一演唱会音响“翻车”,人声... 近日,来自北京的庞女士向都市现场记者反映,她7月11日在河北唐山观看“青春超燃巨星演唱会”时遭遇了极...
尺素金声|中国经济“失速论”站... 一季度GDP同比增长5.0%、二季度增长4.3%、上半年增长4.7%,2026年中国经济半年报发布后...
NVIDIA最深的护城河要凉!... 7月24日消息,AMD在Advancing AI预简报会上表示,CUDA已不再是外界想象中的那条护城...