请与使用 AnimUnserializeOperation 属性来指定外部函数进行比较。
IBM® Rational® Rhapsody® 可以为简单类型的值和一维数组生成动画(显示),而不会发生任何问题。要在动画会话中显示此类特性的当前值,请打开实例的“特征”窗口。
但是,如果要为更复杂的类型(例如日期)生成动画,那么必须将该类型转换为字符串 (char *) 才能由 Rational Rhapsody 显示。此转换是通过编写一个全局函数(检测函数)实现的,该函数接收一个具有所要显示的类型的自变量并返回 char *。您必须使用检测函数的 Animate 和 AnimateArguments 属性禁用此函数本身的动画。
例如,对于按如下方式定义的类型 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 函数的 Animate 和 AnimateArguments 属性必须设置为 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 函数中调用此函数。
此属性的缺省值是空字符串。