• 沒有找到結果。

五、 系統設計與實作

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 檔,以供其他 使用者下載。

相關文件