五、 系統設計與實作
5.1 轉譯器之設計與實作
5.1.1 目標程式架構之設計
在本系統中,轉譯給手機的部份採用Java 語言,而轉譯給 PDA 的部份採 用C++語言,雖然是屬於不同的語言,但對於作為本系統的目標語言來說,有 許多共通點,因此不需要針對兩種語言而有不同的設計,只要在實作時各自使用 自己的元件及語法即可,以下便是此編譯器目標語言之類別圖。
圖二十四 轉譯器目標語言之類別圖
在目標程式中有三個類別,分別為MainProc、Actor 及 Draw。MainProc 是主要的類別,在MainProc 中會有許多 Actor 類別型態的物件,每一個 Actor 物件代表互動式多媒體中的每一個演員;除了Actor 物件外,還會有一個 Draw 類別型態的物件,用來畫背景圖片,因為背景圖並不屬於演員的一份子。而Actor 中也會有一個Draw 類別類態的物件,用來畫此演員本身的圖片。以下針對每個 類別做詳細說明:
MainProc 類別:在這個類別中有幾個重要的函式(function):
z MainFunc():用來處理開場劇情的部份,採用 Thread 或是 Timer 的方式來設計,因為場景的內容為動態顯示,所以必須不斷地更新
各個演員的屬性,以達到移動或動畫的效果。
z SetupActors():用來設定每個演員的屬性,包括移動路徑、資源 檔來源、動畫的Frame 個數、文字的各項屬性等等。
z Paint():除了畫背景圖以外,還會呼叫每個 Actor 的 Draw()來 畫出每一個演員,此function 也是必須被不斷地呼叫,以達到即 時更新顯示晝面的效果。
z EventHandle():用來處理互動事件的部份,在接收到使用者的 互動動作(如:使用滑鼠點選PDA 螢幕或是使用手機方向鍵移動 選擇方框(註二))後作相對應的處理。
z 而 ActorClick()則是用來記錄演員的互動劇情,每一個擁有互動 劇情的演員都會有相對應的ActorClick()。
Actor:記錄了演員的各項屬性,此外,還有一些與演員相關的函式,
例如:專門用來畫圖的Draw()及用來播放動作(包含移動路徑、音效 及圖片Frame 的變換)的 Play(),以及回傳演員目前狀態的
StatusReturn()等等。
Draw():主要用來畫圖,因此有 LoadPic()、ShowPic()、DrawText() 等函式。
表三 PC 上視覺化編輯工具的描述檔說明
_tcscpy(FileName , __TEXT("\\forPDA\\Sc529res\\C0114"));
num = 9;
HBITMAP images2[num] ; loadFrames(DeviceContext,FileName,images2,num);
int path2[]={15,140,15,138,24,81,46,63,72,52,85,24};
p_num = 12;
actor = new Actor(images2,num,path2,p_num,102);
_tcscpy(tempText[1], __TEXT("Hello"));
_tcscpy(tempText[0], __TEXT("你好"));
actor->TextSetting(tempText,textnum,2);
actor->SetTextRGB(255, 0, 255);
actor->SetStyle(1,0,0,0);
actor->SetFontAndSize(__TEXT("標楷體"), 18);
演員上文字的
表四 各裝置上之互動式多媒體的資源檔格式
{ parallel( Actor000.play(), Actor.play() );
Actor002.play();
} [END_PRELUDE]
Actor000 和 Actor 同時演出結束後,換
開場劇情:
Actor000 Actor … Actor002 … … …
Parallel Sequential …
圖二十六 開場劇情記錄格式
Actor000 Actor000 Actor Actor002 … Actor001 … … …
Parallel Sequential …
圖二十七 互動劇情記錄格式
依序演出(Sequential) 同時演出(Parallel)
actor->ChangePathIndex();
...
圖二十九 轉譯器模組流程圖
一開始會先將目標語言宣告及標頭檔的部份先寫到檔案中,此部份的程式碼 是固定的,因此並沒有一個特殊模組來處理,接著依序是互動劇情處理、開場劇 情處理以及演員屬性設定三個模組來處理相對應的程式碼,最後再寫入程式中其 他必需的程式碼,此部份的程式碼也是固定的,因此也不需要由一個模組來處理。
當程式碼均轉換完畢後便讓使用者選擇是否上傳到Web Server 上,若使 用者選擇不上傳,則會呼叫編譯工具使用模組,直接產生執行檔;若使用選擇要 上傳,則呼叫上傳機制模組,由上傳機制模組來處理接下來的流程,下圖即為上 傳機制模組之流程圖。
圖三十 樣板上傳機制架構圖
上傳機制是當PC 上的視覺化編輯工具編好的內容經過轉譯器的轉換後,以 FTP 的方式上傳到 Server 上的資料庫中,接著再傳送一個 Http Request 給樣 板機制處理器,告訴它樣板已上傳完成以及樣板名稱為何,再由樣板機制處理器 來產生出此樣板的相對應置換網頁以及修改首頁的內容,讓使用者在首頁可以看 到此樣板及超連結,此外,還必須將這個樣板轉成Jar 檔或 exe 檔,以供其他 使用者下載。