歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 使用Moblin開發程序——Clutter之UI描述語言

使用Moblin開發程序——Clutter之UI描述語言

日期:2017/2/25 12:02:40   编辑:關於Linux

  在說Clutter的UI描述語言之前,先說說一般情況下UI設計團隊與開發團隊的合作模式。通常,UI設計團隊將UI設計圖交給開發團隊後,開發團隊就開始埋頭coding了。假如一切都是如此理想,那自然再好不過了。可是,光明的前途常常伴隨著曲折的道路,項目中的變化是難免的。冷不防的就冒出個人來,講客戶對UI的要求不是這樣這樣滴,而是那樣那樣滴。改呗,UI團隊改圖,開發團隊改代碼,帶來的工作量可不小。如果UI設計完後能自動產生UI的代碼就好了。

  有人就提出了UI描述語言。讓UI設計人員學習這種十分簡單的描述語言,將UI設計用這種語言來描述,然後通過工具就可以自動生成代碼,假如UI設計發生了變化,重新生成代碼也很方便。

  Clutter就提供了一種UI描述語言。它的語法基於JSON——JavaScript Objective Notation。語言所描述的每一個UI元素我們都稱之為”Object”——對象。每個對象至少擁有2個屬性——ID和Type。UI描述語言支持的對象類型十分廣泛,不僅包括所有的Actor和Container,還支持Behaviour。開發人員在程序中如何使用呢?如果UI描述保存在文件裡的話,先通過clutter_script_load_from_file()讀取描述,然後使用clutter_script_get_object()函數通過對象的ID來獲取對象。

  看個簡單的例子吧,定義一個100x100的紅色矩形。

  {

  "id" : "red-button",

  "type" : "ClutterRectangle",

  "width" : 100,

  "height" : 100,

  "color" : "#ff0000ff"

  }

  程序裡可以這樣來訪問:

  ClutterActor *red_button;

  red_button = CLUTTER_ACTOR (clutter_script_get_object (script, "red-button"));

  Behaviour也可以通過UI描述語言來定義。

  {

  "id" : "rotate-behaviour",

  "type" : "ClutterBehaviourRotate",

  "angle-start" : 0.0,

  "angle-end" : 360.0,

  "axis" : "z-axis",

  "alpha" : {

  "timeline" : { "duration" : 4000, "fps" : 60, "loop" : true },

  "function" : "sine"

  }

  }

  已定義的Behaviour可以在定義Actor時應用到Actor上。

  {

  "id" : "my-rotating-actor",

  "type" : "ClutterTexture",

  ...

  "behaviours" : [ "rotate-behaviour" ]

  }

  Actor的Signal同樣可以被定義。

  ...

  "signals" : [

  { "name" : "button-press-event", "handler" : "on_button_press" },

  {

  "name" : "foo-signal",

  "handler" : "after_foo",

  "after" : true

  },

  ],

  ...

  最後聲明一下,以上例子都是從Clutter的Reference Manual裡抄來的,大家可以直接看http://www.clutter-project.org/docs/clutter/0.8/ClutterScript.html的描述部分,寫的很詳細。

Copyright © Linux教程網 All Rights Reserved