使用 AnimSerializeOperation 属性来指定外部函数

AnimSerializeOperation 属性指定一个外部函数的名称,该函数用于为所有该类型的特性和自变量生成动画。

关于此任务

请与使用 AnimUnserializeOperation 属性来指定外部函数进行比较。

IBM® Rational® Rhapsody® 可以为简单类型的值和一维数组生成动画(显示),而不会发生任何问题。要在动画会话中显示此类特性的当前值,请打开实例的“特征”窗口。

但是,如果要为更复杂的类型(例如日期)生成动画,那么必须将该类型转换为字符串 (char *) 才能由 Rational Rhapsody 显示。此转换是通过编写一个全局函数(检测函数)实现的,该函数接收一个具有所要显示的类型的自变量并返回 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 属性设置为用于将类型 tDate 转换为 char * 的函数的名称。例如,可以将此属性设置为函数 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;
}

通过动画功能运行此模型时,此对象的实例将在浏览器中显示 date 特性值为 5 12 2000。

如果在此特性所属的类中定义 showDate 函数,并且此函数不是静态的,那么 AnimSerializeOperation 属性值与以下示例类似:

myReal->showDate

此值表明,从 OMAnimated<类名> 类中的 serializeAttributes 函数中调用此函数。

注: showDate 函数必须使用 C 中的 malloc/alloc/calloc 函数或者 C++ 中的 new 运算符为返回的字符串分配内存。否则,系统将关闭。

此属性的缺省值是空字符串。


反馈