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);
        }
}

 

 

 

附:

hiero_v2.0的下载安装和使用

转载于:https://www.cnblogs.com/prpl/p/4304730.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值