紧急求助
最近在做一项JAVA游戏移植BREW的项目。其中游戏的对话文字要求逐个显示,在JAVA中,程序使用的是substring一个一个读取原字符串中的字符,再用m_hFont[ nFont ].stringWidth判断下一个字符显示的位置,达到逐个显示的效果,移植到BREW中,我自己编写了一个substring和stringWidth函数,在模拟器上调试,文字能够正常显示,但是在输出窗口中可以发现文字的逐个显示需要反复对内存进行大量操作。在手机上进行调试,却发现文字的位置不能正常判断,在不同的手机上文字部分位置显示不正确。请大家帮我看看。谢谢了
stringWidth(AECHAR* str) {
int ret = 0;
AECHAR* temp = str;
ret = IDISPLAY_MeasureText( disp, AEE_FONT_NORMAL, str );
RELEASE( temp );
return ret;
}
substring( UINT left, UINT right ){
if ( left > right )
{
int temp = right;
right = left;
left = temp;
}
if ( right > Length )
{
right = Length;
}
length = right - left;
offset = left;
AECHAR *Buffer = (AECHAR*) MALLOC((BufferLen+1)*sizeof(AECHAR));
signed char* ch = (signed char*)MALLOC((length+1)*sizeof(signed char));
int i ;
for (i = 0;i<length;i++)
{
ch = data[offset+i];
}
ch[length] = '\0';
STREXPAND((unsigned char*)ch,length,Buffer,(length+1)*sizeof(AECHAR));
Length = WSTRLEN(Buffer);
FREE(ch);
}
}