文章目錄
- So just what can Navi do?
--------------------------------------------------------------------------------------------------------------------------------------------------------
NaviLibrary 研究手記(1)--Navi 介紹
linguister : kun
--------------------------------------------------------------------------------------------------------------------------------------------------------
What is Navi?
這個項目的意圖非常簡單:如果我們可以使用html來描述GUI,這不是很酷嗎?
使用 NaviLibrary 你就可以做到這點!
使用 LLMozLib library 將遊覽器渲染到貼圖,剩下的事情由Navi來負責。
在我們瞭解更多特性之前, Navi 本質上是個 GUI Window。 這表示它可以非常方便的 將 被渲染到貼圖的遊覽器、Ogre環境、以及標準的Alpha掩碼或者色彩鍵技術 整合到一起。 Navi這個詞既代表了庫本身,也代表著 使用它來建立的動態GUI視窗 -- "一個Navi"。為了建立一個Navi,你需要做以下的事情:
1、寫一個頁面。 你應該瞭解一些基本的 javascript 。
2、將你新寫的Navi 和它的尺寸提交給 NaviManager。
3、註冊一個類,並且(或者)將它和NaviData關聯,用來處理各種事件。
4、使用你喜歡的輸入系統向Navi注入滑鼠輸入事件。
就這些!
Features
使用NaviLibrary 最美妙的地方在於它所使用的語言(HTML,CSS,JS)十分成熟,有著大量的文檔,並且相當流行。
Navi 和你平時使用的GUI項目有著很大的不同,因為我們封裝了“Gecko(壁虎)”(想想Fixfox), 幾乎所有能在Web2.0標準上做的事情,在一個Ogre3D 程式裡你都可以做:Yahoo's UI library, Dojo, MooTools, SVG, XUL, AJAX, Flash... 多虧 LLMozLib 和 Mozilla,Navi可以表現上述任意技術 (現在你也可以!)。
So just what can Navi do?
1、Movable -- Navis 都可以移動 簡單的右擊 或者拖拽一個 Navi。
2、Alpha-Masking -- Navis支援Alpha通道。
3、Color-Keying --
4、Dynamic Opacity -- 動態調整不透明度
5、Transparency affects interaction -- 視窗透明度小於%5的地方將對滑鼠透明
6、相對位置 和 絕對位置 -- 當一個Navis 被設定了相對(渲染視窗)位置(4角+4邊中點+中點)後,它不能移動,但是渲染視窗的大小改變時,它會動態更新自己
7、聰明的輸入注入 -- 當你通過NaviManager注入一個使用者輸入的時候,你將得到一個bool的傳回值,它會告訴你當前滑鼠是否在某個Navi上。(譯者:事實上,大部分GUI 的管理系統都提供一個類似IsMouseOnWindow 的查詢函數。)
8、高效 -- Navis 的效率很高; 因為它們只在頁面上的內容發生變化的時候在會更新自己(的貼圖)。
9、限速更新 -- 如果你發現Navi 自己更新的太快了,可以給它設定一個閾值 (fps)。
10、啟用時自動頂層顯示
11、不需要注入鍵盤輸入 -- 因為 LLMozLib 捕獲了這些輸入,並且將它們傳遞給Gecko。
12、Programmatic Navi Page Creation - Thanks to DataURI's, you may create the pages that a Navi can navigate to at runtime. Simply define a string with all the HTML in it (escaping where necessary). You may use "local://" and "resource://" (see below) specifiers inside this HTML string to refer to other resources.(不是很瞭解 URI URL之類的....)
13、本地定位 你可以 'local://' 首碼。本地 是指 NaviPage所在的目錄來說的。你可以通過NaviManager來實現
14、(未完待續)