网站大量收购闲置独家精品文档,联系QQ:2885784924

AndEngine进阶之创建高性能的文本精灵.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在游戏开发中,最耗费性能的是显示文本,因为必须临时在内存中将文本生成bitmap,然后将bitmap绑定到OpenGL的纹理并渲染出来,AndEngine的作者估计是深入Java开发中缓存这个概念的重要性的影响,他对文本精灵作了一个精心的规划,分为不可变的文本精灵(Text)和可变的文本精灵(ChangeableText),并将生成文本bitmap并转换到纹理的职责委托给一个叫Font的类,Font类的实现很特别,它将要显示的字符串切分为单个的字符,通过canvas生成bitmap后缓存起来,然后在绑定纹理的时候合并,这样做的好处是当显示重复的字符时性能非常高,缺点是实现复杂导致若缓存池没有此字符时则性能稍低下。在实际使用中,当一个场景里已经存在很多精灵时,Text或ChangeableText的内容经常无法显示或者显示为一片空白区域。 ???????? 在IPhone,文本精灵分别是CCLabelTTF和CCLabelAtlas,作用相当于AndEngine的Text和ChangeableText,但实现机制完全不一样,CCLabelTTF是将要显示的字符串先生成一张整体的bitmap然后使用Opengl渲染,而CCLabelAtlas则要求预先传入制作好的文字序列图片以便缓存起来。因此我参考Cocos2d的做法增加了一个Label类,此类结合LoadingScene使用起来还靠谱,缺点是在运行时同时改变两个以上的Label的文字时会有时其中一个Label的文字无法显示。以下是代码: UltraTextSource:  HYPERLINK /visualcatsharp/article/details/6627673 \o view plain view plain package?com.weedong.opengl;?? ?? import?org.anddev.andengine.opengl.texture.source.ITextureSource;?? import?org.anddev.andengine.util.HorizontalAlign;?? import?org.anddev.andengine.util.MathUtils;?? import?org.anddev.andengine.util.StringUtils;?? ?? import?android.graphics.Bitmap;?? import?android.graphics.Canvas;?? import?android.graphics.Paint;?? import?android.graphics.Rect;?? import?android.graphics.Typeface;?? import?android.graphics.Bitmap.Config;?? import?android.graphics.Paint.FontMetrics;?? import?android.util.FloatMath;?? import?android.util.Log;?? ?? /**? ?*?性能较强的Font?TextureSource? ?*?@author?? ?*? ?*/?? public?class?UltraFontTextureSource?implements?ITextureSource?{?? ????private?int?mWidth;?? ????private?int?mHeight;?? ????private?Bitmap?mBitmap;?? ?????? ????public?UltraFontTextureSource(String?text,?Typeface?typeface,?float?fontSize,?final?int?pColor,?final?boolean?pAntiAlias,?HorizontalAlign?alignment)?{?? ????????initialize(text,?alignment,?fontSize,?typeface,?pAntiAlias,?pColor);?? ????}?? ?? ????public?UltraFontTextureSource(String?text,?Typeface?typeface,?float?fontSize,?final?int?pColor,?final?boolean?pAntiAlias)?{?? ????????this(text,?typeface,?fontSize,?pColor,?pAntiAlias,?HorizontalAlign.LEFT);?? ????}??

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档