紧急求助

tyou1984 2008-07-01 08:57:55

最近在做一项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);
}
}
...全文
547 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dannyer99 2008-07-10
  • 打赏
  • 举报
回复
我认为没有必要一个字符一个字符的显示到屏幕上;直接修改待显示的字符串,一个一个的添加字符即可;比如,如果你需要显示"abcd",你可以用BREW的方法依次显示"a" "ab" "abc" "abcd",就能够达到你说的效果;
skelusi 2008-07-08
  • 打赏
  • 举报
回复
stringWidth(AECHAR* str) {
int ret = 0;
AECHAR* temp = str;
ret = IDISPLAY_MeasureText( disp, AEE_FONT_NORMAL, str );
RELEASE( temp );
return ret;
}

该函数存在一定的风险,函数执行完后ret存在被改写的风险,你检查过带回正确的值了吗?
unibrew 2008-07-06
  • 打赏
  • 举报
回复
问题问的不是很清晰。

stringWidth(AECHAR* str) {
int ret = 0;
AECHAR* temp = str;
ret = IDISPLAY_MeasureText( disp, AEE_FONT_NORMAL, str );
RELEASE( temp );
return ret;
}

RELEASE(temp) 为什么放函数内,好别扭。

应该
AECHAR *pwsz = new AECHAR[10];
stringWidth(pwsz );
delete[] pwsz;




程序使用的是substring一个一个读取原字符串中的字符

只需要移动指针就可以实现了,如果要分行显示(参照qualcomm 构建可移植brew应用程序的方法之换行显示,也就是IDISPLAY_MeasureText),参照不知道你substring写的函数要什么什么功能,参数就2个位置标识,没有字符串指针,没有返回值。






IDISPLAY_MeasureText就是用来测量长度的,AEE_FONT_NORMAL每个brew机器都支持的字体。
weed927199 2008-07-04
  • 打赏
  • 举报
回复
1,各手机的屏幕,字体都不同,应获得屏幕大小,字体高度宽度,进行处理。
2,你的变量Buffer没有释放。
smilelance 2008-07-02
  • 打赏
  • 举报
回复
IDISPLAY_MeasureText( disp, AEE_FONT_NORMAL, str ); 你真机上是这个字体么? 距离应该按屏幕尺寸来算,这样到不同机器上才会一样,因为不同机器上文字size是不同的
sunwhite 2008-07-02
  • 打赏
  • 举报
回复
在真机上对于文字的大小和距离算的不对,尤其是当真机和模拟器的默认字体不匹配的时候更是这样。
1,项目功能:     系统总体上划分为五个模块:接处警模块、预案管理模块、事件处置模块、资源管理模块、案例管理模块。具体业务流程如下:(1)根据突发疾控事件的级别和紧急情况,级别较低的突发疾控事件由接处警模块处置,级别较高或较为紧急的事件由事件处置模块处置。(2)当突发疾控事件发生时,依据接警员提交的事件信息调用相应的预案,并完善相应的信息,包括资源的配置和指定相关责任单位。(3)接受到任务的相关责任单位根据任务内容和实际情况进行突发疾控事件的处置。(4)任务的相关责任单位在处置过程中将事件处置的进展情况及时的进行反馈,跟踪事件处置的情况。(5)事件处置相关单位根据事件反馈情况合理调整任务,保证事件处置的准确性和效率。(6)当突发疾控事件得到控制或者解除紧急状态后,可以结案,事件处置的所有工作结束后,进入案例管理模块。(7)案例管理对突发疾控事件应急管理系统处置的所有重大或特别重大的事件的处置过程以及基本信息进行记录,便于统计和查询。(8)领导和专家可以对案例和事件处置报告进行评估和总结,以便完善预案模板的管理,提高处置相似或者相同突发疾控事件的效率。     适合做毕业设计参考项目。2,涉及技术:SSM框架,Tomcat3,开发环境:IDEA,MySQL数据库4,讲解方式:从环境安装,项目搭建,以及项目介绍等进行讲解5,包含资料:项目源码(含数据库文件),环境安装包,项目文档。

953

社区成员

发帖
与我相关
我的任务
社区描述
为开发者提供高通丰富的解决方案及全面技术下载内容。本版以AI人工智能、WoS移动笔记本、XR、IoT 物联网、Auto 汽车、生成式AI等核心板块组成,为开发者提供一个便捷及高效的学习交流平台。
人工智能物联网机器学习 企业社区 北京·东城区
社区管理员
  • Qualcomm开发
  • csdnsqst0050
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧