Kanzi學習之路(4) Kanzi的屬性系統

2021-07-26 14:00:07 字數 2619 閱讀 2029

由於中間隔了乙個年假,所以這兩周都沒有更新,今天來一起學習一下kanzi的屬系統,由於內容太多,本文只講解一些概念和在kanzi studio中的使用,下一次會分享在kanzi engine中的使用。

從前面的學習中,我們也接觸到了kanzi一些節點的屬性,比如在scene下新建乙個3d的正方體,我們左鍵選中這個節點,就會在右邊的面板裡顯示該節點的屬性,如下圖:

有了這些屬性的好處就是我們可以通過數值、列舉等將節點的一些特點進行詳細的定義,便於描述和修改。

就像是介紹乙個人,怎麼樣我們才能將他介紹清楚呢,很明顯,我們要告訴別人他的名字,性別,身高,年齡等等特徵,這樣就可以很好的讓別人來了解這個人,這些東西是每個人都會有的,所有稱為人的共有「屬性」。但是,在一些特殊的場合,可能會需要一些特別的屬性,比如,如果他是一名老師,別人可能想知道他的職稱是什麼呀,但是職稱並不是所有人都有的呀,這個就是老師的特有的「屬性」。為了便於交流溝通,我們會預先為一類事物定義一些屬性,這些屬性是這一類事物所共有的,比如上述人的姓名,性別等,老師的職稱等,但是,某些特殊的場合,我們又需要一些特殊的「屬性」才能更好的把事物描述清楚,比如某個人放假了,放了幾天呀,這個一般在描述他人的時候不問提到,所有就沒有進行預定義,那怎麼辦,也分一類人嘛?如果別人想問假期有多少天?上了幾年學,幾年級等等呢?這個時候我們發現為了一些特殊場合才用到的「屬性」專門分一類人是不合理的,因為我們無法預料的專門詳細。那怎麼辦,我們就提供一種方法可以給事物在定義屬性的權利不就ok了嘛,這樣的話,就可以根據場合和需求的不同,自己定義一些特殊的「屬性」。那麼又有人會問了,既然能夠自定義「屬性」,我們幹嘛還去預製一些屬性呢?這個一是為了復用,比如,你是個媒婆,給人家姑娘介紹乙個老師,想了一遍要描述他哪些方面,哪些特點,結果姑娘聽了不滿意,你又給她介紹另外乙個,巧了,還是老師,難道你還要再去想一遍要怎麼介紹了,這樣是不是太麻煩了,完全可以把老師基本的資訊介紹一遍,其他的就是他特有的一些自定義的「屬性」了,這樣是不是事半功倍呀。二是便於統一,便於管理。同是姓名,有人可能說是名字,有人說是姓名,有人說是稱號,大名啥的,是不是很亂呀,簡單和別人介紹也就算了,但是如果想把這些資訊記錄管理,是不是太麻煩了。解決了描述事物的屬性的問題了,但是還有乙個問題,比如,給一群來相親的人每人發了乙份**填一下他們的個人資訊,結果就姓名這一項就填的亂七八糟。有人用簡體中文寫,有人用繁體寫,還有一些特立獨行的非要用英文來寫,誰叫人家起了個英文名字呢,還有一些裝b的,沒英文名字,非要用拼音來寫。。。所以就姓名這一項,我們就要規定一下,都要用簡體中文,但是如果在國外呢,可能就不一樣了,就要求英文名字了。年齡的話,也要規定一下,大於0小於150的整數,而且要是數字。做的這些規定限制是什麼呢,這個就是「屬性型別」,用於量化指定屬性。有了屬性和屬性型別,我們可以方便的描述事物了,但是在某些情況下,事物的屬性可能發生了改變,比如,你給領導送禮了,領導拿人手短,就提拔你了,那你的職位就要改變了,這個時候,人事同志就要在公司人力檔案上去修改你的職位,如何去修改呢,就要根據你的姓名,找到你的記錄,修改你的屬性(其實這就和我們使用kanzi engine來修改某個節點的屬性是一樣的)。閒扯了這一段,基本概括了今天的內容,kanzi的屬性系統用來幹嘛的,

如何在kanzi engine中查詢想要的節點並修改其指定屬性,還有如何自定義屬性。接下來,我們來詳細看看。

屬性系統

屬性系統為指定和檢查節點的狀態、外觀和行為提供了方法。比如,乙個屬性可以定義節點的顏色,表示乙個按鍵是否被按下,或者指定乙個節點的對齊方式等。儘管你不了解屬性系統是如何工作的,但是你只要在kanzi studio設定了屬性,你就可以在**中去獲取修改使用這個屬性。但是,為了充分利用屬性系統的一些特性,你還是要去熟悉屬性系統是如何工作的。屬性系統為訪問kanzi節點的資料提供了統一的方式,因此,很多kanzi的子系統可以去操作這些資料。比如,你可以讓乙個屬性值做乙個動畫改變,提供屬性中間的繫結,監控屬性值的改變。任何屬性值都可以被多個輸入源影響改變。屬性系統定義了如何去如何解決受所以輸入影響之後的屬性值和如何解決當前的屬性值的規則。比如,你可以直接去指定乙個屬性的值,但是一些屬性可能有預設的值,風格也可能會影響屬性的值,它們可能還會被動畫和狀態管理機制修改。通過提供自動應用的規則,最最大的減少了使用者必須手動修改屬性的地方。

屬性使用

kanzi裡大多數屬性定義在使用它們的類中。這些屬性在定義的地方來配置事物的外觀、狀態和行為。比如,text block節點力的text屬性定義了節點繪製的文字,visible屬性定義節點和它派生節點的可見性。

但是,有一些kanzi 屬性用來配置其他節點的外觀、狀態和行為。比如,在materials定義diffuse color屬性可以改變使用該material節點的外觀,在grid layout裡定義row和column屬性,它們並不用來設定grid layout節點自己,而是分配grid layout下的子節點。

屬性型別

每乙個屬性都有乙個描述的屬性型別。在屬性使用中,它的屬性型別是唯一的,屬性的名字和屬性值的型別都有該屬性來儲存。這個屬性型別也就定義了該屬性值的型別。比如,node.visible這個屬性用於node這個類和它的衍生類中。你就可以通過屬性名字(node.visible)在執行時去查詢屬性型別。因為這個屬性型別是布林型別的,它只接收true和false。那麼接下來,我們來看看kanzi支援的屬性型別有哪些:

Linux學習之路(4)

gcc的使用 1 計算機能識別的唯一語言是二進位制語言 語言的發展 機器語言 二進位制資料 1101 0101 組合語言 用符號表示一組操作 add call mov 優 直接操作硬體,速度快 高階語言 以語句為單位進行操作 優 可移植 c語言是中級語言,具備組合語言的特性,同時也具備高階語言可移植...

C 學習之路 day4

day4知識點 mystring類物件自我實現以及部分實驗源 ifndef mystring h define mystring h include class mystring endif mystring h include mystring.h include mystring mystrin...

extjs4的學習之路

以前一直是在做後端的事情,最近做公司的另乙個專案要用到extjs的技術。很少接觸到前端的技術,所以剛開始做的時候是跟著同事的開發文件來做,自己也extjs官網學習,還是遇到很多問題,主要還是對這個技術不熟悉的原因。遇到這些問題有同事在就問同事,同事不在的話就自己網上找。問題也是一點點的解決了。要做乙...