您可使用虛擬參數 params‑>,以及下列語法,來參照狀態圖中的事件引數:
event/params->event_arg1, params->event_arg2
請考量類別 Firecracker,其會處理事件 discharge,且引數為 color。引數 color 是列舉類型 Colors,其可能的值為紅色 (0)、綠色 (1) 或藍色 (2)。在狀態圖中,您將指出想要使用轉移上的下列標籤,來在發生事件時將顏色傳遞到該事件:
discharge/params->color
當您執行具有動畫的應用程式時,您可以透過在動畫指令欄位中鍵入下列指令,來產生 discharge 事件,並將值 red 傳遞給它:
Firecracker[0]->GEN(discharge(red))
應用程式瞭解 red 作為傳遞至事件 discharge 的引數 color 的值,因為具有表示法 params->color。紅顏色會轉換為其整數值 (0),且事件進入主要執行緒的事件佇列,如下所示:
Firecracker[0]->discharge((int)color = 0)
最後,事件佇列會處理事件 discharge,並具有由 params-> 傳遞的值 red。Firecracker 會顯示為紅色,並從 ready 轉移為 discharged 狀態。
params-> 機制的運作方式如下所示:當您建立事件並提供引數時,產品會產生事件類別(衍生自 OMEvent),且將該引數作為其屬性。事件的程式碼是在套件檔中產生的。
下列範例程式碼顯示事件 discharge,其具有一個稱為 color 的引數。程式碼會在 Default 套件的標頭檔中產生:
//-------------------------------------------------------
// Default.h
//-------------------------------------------------------
class discharge;
class Firecracker;
enum Colors {red, green, blue};
class discharge : public OMEvent {
DECLARE_META_EVENT
//// User explicit entries ////
public :
Colors color;
//// User implicit entries ////
public :
// Constructors and destructors:
discharge();
//// Framework entries ////
public :
discharge(Colors p_color);
// This constructor is need in code instrumentation
discharge(int p_color);
};
當 Firecracker 事件佇列準備好取得事件 discharge 時,它會呼叫 SETPARAMS(discharge)。SETPARAMS 是在 oxf\state.h 中定義的巨集,如下所示:
#define SETPARAMS(type) type *params; params=(type*)event
呼叫 SETPARAMS(discharge) 會將指標類型的變數 params 配置給 discharge 類型的事件。使用轉移動作組件中的 params->color 作為 discharge‑>color 的速記表示法。