您好,登錄后才能下訂單哦!
一 , DataModel(數(shù)據(jù)類)
①:需要繼承 bind.BaseBindModel(為了發(fā)送屬性數(shù)據(jù))
②:需要監(jiān)聽(tīng)的數(shù)值需要寫(xiě)setter/getter
③:在setter中使用changeValue方法
changeValue方法參數(shù)
1,屬性名稱
2,與屬性對(duì)應(yīng)的字段名稱
3,值(要賦的值)
如:
module app { /** * 數(shù)據(jù)類-成員需要綁定 */ export class DataTest extends bind.BaseBindModel { private _name : string = "Kayer"; private _combat : number = 1; /** * 設(shè)置名稱 */ public set Name( $name : string ){ this.changeValue<string>("Name","_name",$name); } /** * 獲取名稱 */ public get Name() : string{ return this._name; } public set Combat( $combat : number ){ this.changeValue<number>("Combat","_combat",$combat); } public get Combat() : number{ return this._combat; } public constructor() { super(); } } }
二,在View(獲取他地方)綁定數(shù)值
①:綁定需要使用bind.BindTool類(為了獲得發(fā)送的屬性數(shù)據(jù)并更新)
②:綁定方案有2種
1,屬性綁定 : 直接將新值賦給綁定的值
靜態(tài)方法 bindProperty<T>
參數(shù)5( 最后一個(gè)參數(shù) ) : 是否馬上用DataModel里面的值為View賦值,默認(rèn)true
2,回調(diào)方法綁定 :
a,回調(diào)方法參數(shù)為 IBindEventData<T>
靜態(tài)方法 bindCallBack<T>
參數(shù)4(最后一個(gè)參數(shù)):是否馬上用DataModel里面的值為View賦值,默認(rèn)true
③:銷毀
bindProperty<T> 和 bindCallBack<T> 都會(huì)返回類 : Bind2Subscriber<T>
Bind2Subscriber<T>提供了銷毀方法 : destory(),不需要監(jiān)聽(tīng)(view關(guān)閉時(shí))調(diào)用一下
如:
/** * 數(shù)據(jù)類-成員需要綁定 */ export class DataTest extends bind.BaseBindModel { private _name : string = "Kayer"; private _combat : number = 1; /** * 設(shè)置名稱 */ public set Name( $name : string ){ this.changeValue<string>("Name","_name",$name); } /** * 獲取名稱 */ public get Name() : string{ return this._name; } public set Combat( $combat : number ){ this.changeValue<number>("Combat","_combat",$combat); } public get Combat() : number{ return this._combat; } public constructor() { super(); } } } 二,在View(獲取他地方)綁定數(shù)值 ①:綁定需要使用bind.BindTool方法 ②:綁定方案有2種 1,屬性綁定 : 直接將新值賦給綁定的值 靜態(tài)方法 bindProperty<T> 參數(shù)5( 最后一個(gè)參數(shù) ) : 是否馬上用DataModel里面的值為View賦值,默認(rèn)true 2,回調(diào)方法綁定 : a,回調(diào)方法參數(shù)為 IBindEventData<T> 靜態(tài)方法 bindCallBack<T> 參數(shù)4(最后一個(gè)參數(shù)):是否馬上用DataModel里面的值為View賦值,默認(rèn)true ③:銷毀 bindProperty<T> 和 bindCallBack<T> 都會(huì)返回類 : Bind2Subscriber<T> Bind2Subscriber<T>提供了銷毀方法 : destory(),不需要監(jiān)聽(tīng)(view關(guān)閉時(shí))調(diào)用一下 如: private vName : string = "CCCC"; private vCombat : number = 0; private dataTest : DataTest = null; private dBind : bind.Bind2Subscriber<string> = null;//不用時(shí)需要銷毀 private dBind2 : bind.Bind2Subscriber<number> = null;//不用時(shí)需要銷毀 public constructor() { super(); this.skinName = "resource/eui_skins/ButtonDemo.exml"; egret.log( "init vName : " + this.vName ); this.dataTest = new DataTest(); egret.log( "======= 綁定字段(屬性) ======" ); this.dBind = bind.BindTool.bindProperty(this,"vName", this.dataTest , "Name",true); egret.log( "initChange vName : " + this.vName ); this.dataTest.Name = "Aonaufly"; egret.log( "Changed2Listener vName : " + this.vName ); egret.log("======= 綁定回調(diào)方法 ======"); egret.log("init vCombat :" + this.vCombat); this.dBind2 = bind.BindTool.bindCallBack( this.bindCallBack , this.dataTest , "Combat" , true ); this.dataTest.Combat = 7; } private bindCallBack( $data : bind.IBindEventData<number> ):void{ if( $data.$oldValue == undefined ){ //初始化值 egret.log( "initChange vCombat :" + $data.$newValue ); }else{ //監(jiān)聽(tīng)值 egret.log( "Changed2Listener vCombet :" ); egret.log( "oldValue is : " + $data.$oldValue); egret.log( "newValue is : " + $data.$newValue ); } this.vCombat = $data.$newValue;//賦新值 } /** * 銷毀 */ public destory() : void{ if( this.dBind != null ){ this.dBind.destory(); this.dBind = null; } if( this.dBind2 != null ){ this.dBind2.destory(); this.dBind2 = null; } }
結(jié)果:
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。