OGEngine_2.x中BitmapFont加载后黑屏问题的解决办法
在我使用OGEngine_2.x进行消灭圈圈(星星)游戏的实践的时候,使用BitmapFont对自定义字体进行调用。
原文字体教程如下:http://blog.csdn.net/OrangeGame/article/details/40182921
原文使用的Hiero版本为v3.0,但我在网上找了很久没找到,只找到了Hiero_v2.0
根据教程,使用Hiero_v2.0生成fnt,并使用TexturePacker将png图片压缩为pvr.ccz和xml后,放入android项目当中。
发现一旦调用com.orange.opengl.font.BitmapFont构造方法加载字体文件,则出现黑屏情况,原因在于fnt无法找到需要加载的png文件(因为在原教程中png已经压缩为pvr.ccz和xml)。
解决办法:
1.用记事本打开fnt文件,将file="XXX.png"改为file="XXX.xml"(即TexturePacker生成的xml文件)。(不建议使用该方法)
此时在项目中使用BitmapFont进行字体输出,可能会出现奇怪的图案,因为TexturePacker压缩png后生成的pvr.ccz和xml的字符坐标和原png的不一样。
TexturePacker的输出设置必须与Hiero的输出设置一样,才可以正常显示。
2.直接使用Hiero_v2.0生成的fnt和png两个文件进行加载。
若输出的png文件较小可以使用这种方法。缺点是若文件较大,不进行压缩的话会比较耗内存。
Hiero_v2.0的问题在于:没有办法输出中文字符。对于仅需要英文字符的同学来说,Hiero2.0足够用了。
想要输出中文字符集可以试试BMFont。
BMFont的教程(看前半段就可以了):
http://blog.csdn.net/qiurisuixiang/article/details/8984288
不过如果要在OGE_2.1.4以及之前的版本中使用BMFont输出的fnt文件,还应该做一些修改。
1.将fnt文件用记事本打开
2.删除 alphaChnl / redChnl / greenChnl / blueChnl / kernings / kerning 等不必要的参数
3.使用ANSI编码进行保存
最后附上OGE文字输出的代码和效果图:
以下仅是GameLayer的主要代码——切勿直接使用
import com.orange.engine.device.Device;
import com.orange.entity.text.Text;
import com.orange.entity.text.TextOptions;
import com.orange.util.HorizontalAlign;
import com.orange.util.color.Color;
import com.orange.opengl.font.BitmapFont; public class GameLayer extends MatchLayer{ // 引用上级scene
private GameScene mGameScene; public GameLayer(GameScene pScene) {
super(pScene);
this.mGameScene = pScene;
initView();
}
private void initView() {
BitmapFont bitmapFont = new BitmapFont(getEngine().getTextureManager(), Device.getDevice().getFileManage(), "font/bitmapFont.fnt");
bitmapFont.load(); Text t = new Text(this.getCentreX(), 50, bitmapFont, "你好世界", new TextOptions(HorizontalAlign.CENTER), this.getVertexBufferObjectManager());
t.setColor(Color.RED);
this.attachChild(t);
}
}
附:
OGEngine_2.x中BitmapFont加载后黑屏问题的解决办法的更多相关文章
- 关于NGUI的动态加载后的刷新显示问题,解决办法!!
http://momowing.diandian.com/post/2012-09-06/40038001275 最近碰NGUI用到它的动态列表功能(ps:就是加东西,删除东西).我这里用的是UIDr ...
- ArcGIS客户端API中加载大量数据的几种解决办法
ArcGIS客户端API中加载大量数据的几种解决办法 2011-03-25 18:17 REST风格的一切事物方兴未艾,ArcGIS Server的客户端API(Javascript/Flex/Sil ...
- BadImageFormatException,未能加载正确的程序集XXX的解决办法
BadImageFormatException,未能加载正确的程序集XXX的解决办法 IDE:VS2010 语言:C# 异常:System.BadImageFormatException,未能加载正确 ...
- Eclipse中js文件修改后浏览器不能及时更新的解决办法
项目中js文件修改后浏览器不能及时更新的解决办法 转载:http://www.codeweblog.com/%E9%A1%B9%E7%9B%AE%E4%B8%ADjs%E6%96%87%E4%BB%B ...
- VMware Workstation 14 黑屏的一个解决办法
近期很多朋友遇到了VMware Workstation 14开启或新建虚拟机后黑屏的现象,同时发现如果挂起虚拟机,可以显示挂起前最后的画面.显然,虚拟机核心是正常工作的,只是“显示”方面出现了问题. ...
- jquery中load()加载页面,刷新之后,加载的页面不显示的解决办法
<script language="javascript" type="text/javascript"> $(function(){ $(&quo ...
- IIS无法加载字体文件(*.woff,*.svg)的解决办法
在编写前端代码的过程中经常会遇到使用特定的字体(*.woff,*.svg),此时在加载字体时请求会被返回 Failed to load resource: the server responded w ...
- Bootstrap 模态对话框只加载一次 remote 数据的解决办法 转载
http://my.oschina.net/qczhang/blog/190215 摘要 前端框架 Bootstrap 的模态对话框,可以使用 remote 选项指定一个 URL,这样对话框在第一次弹 ...
- 使用Django的时候,页面请求正常,也没有报任何错误,甚至连警告都没有的情况下,页面却还是原地不动或者闪一下或者无限显示加载动画的情况下的解决办法
这个问题描述比较笼统,但根据我目前遇到过两种情况来看,似乎都比较重要而且实用,所以打算分别讲述一下. 说明:Django的版本是Django2.0 第一种:URL配置错误 页面闪一下,却原地不动,可能 ...
随机推荐
- php用PHPExcel库生成Excel文档的例子
<?php require_once '../libs/PHPWord/PHPWord.php'; require_once '../libs/PHPWord/PHPWord/IOFactory ...
- C# JAVA成员访问修饰符比较
在面向对象的访问修饰符中常用的有public ,private ,protected C# 访问修饰符: private < protected internal < internal/p ...
- Sublime Text保存文件时自动去掉行末空格
修改一个Sublime Text的用户配置,其中这个配置就是"保存文件时自动去掉每行结束后多余的空格",具体操作如下: 在Sublime Text菜单栏中找到preferences ...
- Python系列之多线程、多进程
线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程. Python的标准库提供 ...
- Linq常用List操作总结,ForEach、分页、交并集、去重、SelectMany等
/* 以下围绕Person类实现,Person类只有Name和Age两个属性 一.List<T>排序 1.1 List<T>提供了很多排序方法,sort(),Orderby() ...
- Opencv怎么读入,显示,保存图像-OpenCV步步精深
怎么读入图像呢? 我们用 img = cv2.imread('图像路径\原图像名称',0) 原图像名称要有后缀 .png , .jpg等等原图像带有的后缀. 这里我们着重说明一下图像路径,这个路径一定 ...
- 使用svn与maven管理的项目导入Eclipse,但是与本地svn客户端关联不上?
因为这个问题,导致我的项目导了删,删了导.现在终于弄明白了. 首先,需求场景是: 1.使用svn进行版本控制; 2.使用maven进行项目管理. 3.使用Tortoise svn将项 ...
- jquery各种事件使用方法总结(from:天宇之游)
ps:本博客转自博主 天宇之游 ,地址:http://www.cnblogs.com/cwp-bg/ ,再次感谢天宇之游.jquery事件使用方法总结 一.鼠标事件1. click():鼠标单击事 ...
- PHP 注释 数据类型 变量的定义/输出 类型的获取/转换 可变变量
注释方法: 1,单行注释: // 2, 多行注释: /* */ 二,数据类型 1,integer(整数型):在三十二位操作系统中它的有效范围是:-2147483648~+2147 ...
- Ubuntu16.04下Office替代品Office Online
Ubuntu16.04下Office替代品 Ubuntu16.04下的office Libreoffice 这个是Ubuntu自带的Office,总是存在各种问题,如果用来阅读还是不错的,但是编辑就不 ...