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之自定义类库(一)


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

相关内容

热门资讯

美伊维持停火,国际油价回落 新华社纽约5月5日电(记者刘亚南) 由于美国与伊朗停火状态持续,国际原油期货价格5日早盘显著走低后窄...
“AI是否会取代人类工作” 诺... 过去一年,“AI是否会取代人类工作”的讨论持续升温,相关研究报告、行业预判和真实案例不断刷屏,让职场...
每经热评丨豆包收费标志着国产A... 来源:滚动播报 (来源:千龙网) 春节的AI(人工智能)红包大战硝烟尚未散尽,豆包App Store...
北斗导航、无人机“显身手” 春... 眼下,产粮大省黑龙江的春耕工作正有序进行,在位于黑龙江鹤岗的普阳农场,水稻插秧工作从今天起全面启动,...
强词夺理!“中国不应获得最先进... ► 文 观察者网 熊超然 一边想赚中国市场的钱,一边却又“提防”中国科技的崛起,英伟达创始人兼首席执...
苹果iOS 27将允许用户选择... IT之家 5 月 6 日消息,彭博社记者马克 · 古尔曼今日报道称,苹果计划在今年秋季发布的 iOS...
鲁比奥:我们改了措辞,中俄别再... 【文/观察者网 齐倩】当地时间5月5日,美国国务卿鲁比奥在白宫简报会上称,美国提出了新的联合国决议,...
“南鼠北调”为攻击蒋万安?蓝营... 海峡导报综合报道 台北、新北地区近期分别发生“汉坦病毒”死亡及确诊个案,使鼠患问题引发关注。“青鸟”...
巴拿马外长喊话访华团:尊重中国... 【文/观察者网 柳白】据香港英文媒体《南华早报》报道,数名巴拿马议员组成的代表团抵达中国访问之际,巴...
华帝燃气灶自动熄火什么原因 原因:热敏针出现故障,检查灶眼,看中间的火焰能不能烧到探针,烧到探针才能定住火,在点火的时候,长按几...