zoukankan      html  css  js  c++  java
  • 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的下载安装和使用

  • 相关阅读:
    js 和 jquery 动态创建元素
    京东火车票正式上线:开卖火车票!
    网易旗下新域名泰坦尼克曝光:要出航海题材新作
    Facebook CEO扎克伯格造访日本,获首相会见
    struts2教程系列
    hadoop方面的资料
    FlexViewer入门资料
    深入浅出Flex Viewer系列
    flex css
    【Flex4中的皮肤使用组件数据】系列
  • 原文地址:https://www.cnblogs.com/prpl/p/4304730.html
Copyright © 2011-2022 走看看