1. 程式人生 > >紅孩兒編輯器的模組設計2

紅孩兒編輯器的模組設計2

紅孩兒編輯器的模組設計2  

核心控制子系統的控制模組

第一層的控制分成三種情況:
以事件型別分為滑鼠,鍵盤按下事件,鍵盤彈起事件

第二層控制分成語言設定
分成中文和英文

第三層控制為輸入字元的分類
分成直接列印的字元,英語小寫字母,數字與空格

五筆輸入法的控制邏輯
分成四類,有一級簡碼,二級簡碼,三級簡碼,和四個字母的全碼。
在三級簡碼和全碼時,
在查詢字串對應區位碼時,對映的資料是有序排序的,以字母的升序進行排列。
現在採用的是順序遍歷的查詢演算法,以後可以優化為折半查詢的演算法,實現起來稍微
複雜一點。現在的優化是採用了索引的方式,縮小了查詢的範圍。


在編輯器的複製與貼上一行,或者是刪除一行時,為了提高執行效率,需要把陣列的方式,
改成是連結串列的方式。陣列有利於順序的遍歷操作,連結串列有利於插入和刪除的高效率執行,
尤其是在檔案有幾千行,幾萬行的情況下。C語言中有指標,javascript語言中沒有,
指標的本質就是一個記憶體的地址或者是偏移量。所以在javascrpt語言中可以設計一個二維陣列
來模擬這個指標。用它來儲存二維的快取的陣列的元資料。陣列中的每個元素是一個子陣列,
代表快取中的一行。這個子陣列的第一個元素指出快取中上一行的下標,第二個元素指出快取中的
下一行的下標,第三個元素表示快取的這一行中有多少個字元。

例如 [[0,2,10],[1,3,2],[2,0,5]]
第一行的上一行是空的,以0表示,第一行的下一行為2是第二行,第一行有10個字元。
第二行的上一行是1,下行是3,有2個字元。
第三行的上一行是2,下行是0,表示沒有,即這是最後一行。有5個字元。