QFramework框架 生命週期方法 04

2021-10-21 20:50:47 字數 2957 閱讀 1695

概述:

正文:

研究生命週期,我們不再新建指令碼,我們在enterpanel.cs 和mainpanel.cs中探索。

我們看下圖:

可以看到processmsg、oninit、onopen、onshow、onhide、onclose六個方法。

processmsg 是uikit中的一套模組兒化的訊息機制,解決各個panel之間資料傳遞的發生的高耦合性問題,在後續的篇幅中會有講解。

oninit 則是在 uipanel 所在的 prefab 初始化的時候進行呼叫的,在呼叫 uikit.openpanel 時,只要在 uimgr 中沒有對應的快取介面時,就會呼叫一次 oninit 這個週期方法。可以簡單理解成物件的建構函式或者unity指令碼生命週期中的awake或start.

onshow 與 onhide 是同一對api,用來解決在業務中暫時需要隱藏上一級介面onhide,當下一級頁面關閉onclose時,顯示父介面的情況onshow。這些一些api在我們做一些管理系統的時候經常用到。

onclose方法 是和oninit方法成對兒的api,在介面銷毀的時候處理的一些善後的工作,簡單理解為unity生命週期函式中的ondestroy方法 會物件的析構方法。

相關操作

在mainpanel下新增新的button控制項,命名為btnback,掛載bind元件。

所有的bind元件中的型別是可以選擇的

mainpanel中的節點修改後如下:

頁面效果如果:

更新mainpanel預製體,生成**。

修改mainpanel.cs檔案中的**如下:

using unityengine;

using unityengine.ui;

using qframework;

namespace qframework.example

public partial class mainpanel : uipanel

protected override void oninit(iuidata uidata = null)

/// /// 初始化資料

///

void init());}

protected override void onopen(iuidata uidata = null)

protected override void onshow()

protected override void onhide()

protected override void onclose()

}}

修改enterpanel.cs檔案中的內容如下:

using unityengine;

using unityengine.ui;

using qframework;

namespace qframework.example

public partial class enterpanel : uipanel

protected override void oninit(iuidata uidata = null)

);//隱藏當前的頁面

uikit.hidepanel();

});debug.log("enterpanel oninit");

}protected override void onopen(iuidata uidata = null)

protected override void onshow()

protected override void onhide()

protected override void onclose()

}}

在多次切換進入系統按鈕和返回按鈕後我們看結果

整個過程  enterpanel oninit 只執行一次

uikit.openpanel(uilevel.common);
在兩個紅色舉行框中可以看到mainpanel 被轉殖了3次

在底部紅色框中mainpanel的所有生命週期方法各執行3次和轉殖及銷毀3次吻合

同時enterpanel onhide和enterpanel onshow各執行3次說明enterpanel 被隱藏及顯示各三次

在寫此案例時注意**位置

顯示enterpanel

uikit.showpanel();
隱藏enterpanel

uikit.hidepanel();
【注】

oninit、onopen、onshow  是在unity生命週期方法awake 和start 方法之間

【關注、點讚,收藏】

qq群號:1056320746

Django 框架 django的請求生命週期

概述 首先我們知道http請求及服務端響應中傳輸的所有資料都是字串,同時http請求是無狀態的,可以通過session和cookie來輔助。瀏覽器通過ip和埠及路由方式訪問服務端.在django中,當我們訪問乙個的url時,會通過路由匹配進入相應的html網頁中.django的請求生命週期是指當使用...

Spring框架中的Bean物件的生命週期

從書上可知,spring框架中bean物件有它的生命週期,還包括bean的銷毀。在beanfacotory中獲取的例項是singleton,beanfactory預設每乙個引用來維護乙個例項,對單執行程式來講,並不會有什麼問題,但是多程式來說,就需要你注意執行的安全,可以設定每次在beanfacot...

iOS ViewController生命週期

工作中一直寫viewcontroller,但是對它的生命週期一直沒有乙個比較完整地理解,最近看了幾篇部落格,在這裡對viewconroller的生命週期做乙個總結,一是為了自己學習,二是為了給大家乙個參考,如有錯誤,歡迎指正。1.alloc 建立物件,分配空間 2.init 初始化物件,初始化資料 ...