/pic/test1.jpg imagefile> 50 imagecx> 70 20 imagex> 10 …. 上例中定义了一个名为mainform的主界面窗口和一个名为pic1的图片控件。主界面窗口大小为128*160,颜色深度为16位。图片对应的文件时pic/test1.jpg,该图片的大小为50*70,位于主界面窗口上(20,10)的位置。图片其中的标签名,如formname, imagename, formcx, formcy, formcolordepth,imagefile等是模板中待替换的参数,而标签值,如mainform, userid,pic1,128,160,16,/pic/test1.jpg等用于代替模板中待替换的参数。 3.3 brew应用程序框架模板文件 模板描述文件可以理解成是一种解释型文件,需要模板引擎解析执行,执行的结果输出是程序源代码文本。模板描述文件实现了代码框架、数据和流程分离,而且支持模板块嵌套。 brew应用程序框架模板文件包括aeeapplet结构体定义部分,入口函数aeeclscreateinstance(),事件处理函数aeeapplet_handelevent(),初始化函数aeeapplet_initappdata(),和系统终了函数aeeapplet_freeappdata()四部分。 模板中入口函数aeeclscreateinstance()采用固定的格式和内容,一般不需要修改。事件处理函数aeeapplet_handelevent()包含evt_app_start、evt_app_stop、evt_app_suspend等小程序事件、按键事件evt_key、evt_command事件等的处理。这部分是brew应用的重要组成部分。初始化函数aeeapplet_initappdata()主要完成应用的初始化,包括变量的初始化、接口实例的创建及初始化等;系统终了函数aeeapplet_freeappdata()主要完成接口实例的释放,内存变量的释放等。 3.4 brew应用代码自动生成引擎 代码自动生成引擎用于解析xml定义文件和读取指定的模板文件,并将定义文件中解析得来的数据信息,在引擎中进行保存,然后对模板文档中的标记及变量进行匹配及替换,从而产生源代码输出。根据上面的流程将引擎的设计分成三个步骤: ● 解析xml数据文件,读取其中相关的信息; ● 解析模板文件,找到要添加代码的位置并添加代码; ● 根据需要,对已替换的模板进行总体的调整。 例如引擎对用户界面xml文件分析得知在窗口上设计了一个图片,引擎将在程序模板的结构体初始化部分生成图片实例指针的定义: iimage*piimage_pic1; 在初始化函数中生成图片接口示例代码: pme->piimage_pic1 = ishell_loadimage (pme->pishell, “/pic/test1.jpg”); 在事件处理函数的evt_app_start事件中生成加载图片的代码: iimage_draw(pme->piimage_pic1,picx,picy); 在终了函数中生成释放图片实例的代码: if(pme->piimage_pic1 != null) { iimage_release(pme->piimage_pic1); pme->piimage_pic1=null; } 4 结束语 本文提出了一种基于xml模板的brew代码自动生成技术。在本系统中,通过对brew接口的封装,为brew手机应用开发提供一个可视化的设计环境。利用该系统,开发人员可以进行“所见即所得”的应用程序界面设计,并根据brew程序框架模板生成相应的源代码。该系统可使brew应用开发由过去的手工书写源代码变为可视化设计、源代码自动生成,促进brew应用开发的标准化和工业化,大幅度提高开发效率。 参考文献 [1]r.j.sanchez. cdma digital cellular overview and field trials results[j].ieee mtt-s international topical symposium,1995. [2]attar r, ghosh d, lott c ,et al. evolution of cdma2000 cellular networks: multicarrier[j]. ev-do.ieee communications magazine,0163-6804/06,2006(3):46. [3]李贺,尹国强,蒋亮.brew技术开发与应用[m].北京:机械工业出版社,2006. [4]郭金发,张龙.短信与brew开发技术及实践[m].西安:西安电子科技大学出版社,2005. [5]卜佳俊,张海翔,陈天洲.深入brew手机游戏开发[m].北京:清华大学出版社,2004.
上一页 [1] [2]
|