AnimSerializeOperation プロパティーを使用した外部関数の指定

AnimSerializeOperation プロパティーは、その型のすべての属性と引数のアニメーション化に使用する外部関数の名前を指定します。

このタスクについて

AnimUnserializeOperation プロパティーを使用した外部関数の指定と比較してください。

IBM® Rational® Rhapsody® は、単純型と 1 次元配列の値を問題なくアニメーション化 (表示) できます。 アニメーション・セッションでそのような属性の現行値を表示するには、インスタンスの「フィーチャー」ウィンドウを開きます。

しかし、日付など、より複雑な型をアニメーション化する場合、Rational Rhapsody がそれを表示するには型を文字列 (char *) に変換する必要があります。この変換は通常、 表示する型の引数を 1 つ受け取り、char * を返すグローバル関数、トレース/アニメーション設定関数 を作成することで行うことができます。 トレース/アニメーション設定関数自体のアニメーションは無効にする必要があります (関数の AnimateAnimateArguments プロパティーを使用)。

例えば、型 tDate を以下のように定義できます。

typedef struct date {
   int day;
   int month;
   int year; } %s;

int の属性 count と型 tDate の属性 date を持つオブジェクトを持つことができます。そのオブジェクトは、以下の本体を含むイニシャライザーを持つことができます。

me->date.month = 5;
me->date.day = 12;
me->date.year = 2000;

date 属性をアニメーション化するには、 date の AnimSerializeOperation プロパティーを型 tDatechar * に変換する関数の名前に設定する必要があります。例えば、プロパティーを showDate という名前の関数に設定できます。この関数名は、括弧を付けずに入力する必要があります。 これは型 tDate の属性をとり、char * を返す必要があります。showDate 関数の AnimateAnimateArguments プロパティーは Cleared に設定する必要があります。

以下に showDate 関数の実装例を示します。

showDate(tDate aDate) {
    char* buff;
    buff = (char*) malloc(sizeof(char) * 20);
    sprintf(buff,"%d %d %d",
        aDate.month,aDate.day,aDate.year);
    return buff;
}

このモデルをアニメーションで実行すると、このオブジェクトのインスタンスは、ブラウザーで日付属性の 5 12 2000 の値を表示します。

属性が含まれるクラスと同じクラスで showDate 関数が定義されていて、静的関数ではない場合、 AnimSerializeOperation プロパティーの値は、以下のようになります。

myReal->showDate

この値は、関数が OMAnimated<classname> クラスにある serializeAttributes 関数から呼び出されることを示します。

注: showDate 関数は、返される文字列のメモリーを C 言語の malloc/alloc/calloc 関数または C++ 言語の new 演算子で割り当てる必要があります。割り当てを行わないと、システムがシャットダウンします。

このプロパティーのデフォルトは、空白の文字列です。


フィードバック