1

我一直在用 AndEngine 做一些 android 编程,并在 Hashtables 上遇到了一些奇怪的问题。

基本上如果我这样做:

        BitmapTextureAtlas m_textureAtlas = new BitmapTextureAtlas(p_baseActivity.getTextureManager(), 1024, 1024, TextureOptions.BILINEAR_PREMULTIPLYALPHA);

    TextureRegion texture1 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(m_textureAtlas, p_baseActivity, "Chrysanthemum.jpg", 0, 0);

    m_textureAtlas.load();

    Sprite m_sprite1 = new Sprite(0, 0, texture1, p_baseActivity.getEngine().getVertexBufferObjectManager());
    this.attachChild(m_sprite1);

一切话都好。但如果我这样做:

        BitmapTextureAtlas m_textureAtlas = new BitmapTextureAtlas(p_baseActivity.getTextureManager(), 1024, 1024, TextureOptions.BILINEAR_PREMULTIPLYALPHA);

    Hashtable<String, TextureRegion> test = new Hashtable<String, TextureRegion>();
    TextureRegion texture1 = test.put("1", BitmapTextureAtlasTextureRegionFactory.createFromAsset(m_textureAtlas, p_baseActivity, "Chrysanthemum.jpg", 0, 0));

    m_textureAtlas.load();

    Sprite m_sprite1 = new Sprite(0, 0, texture1, p_baseActivity.getEngine().getVertexBufferObjectManager());
    this.attachChild(m_sprite1);

它(图像)闪烁并且尺寸都是错误的。现在我可以为这个项目做第一组代码,但我不确定我是否做错了什么,或者我应该完全避免 put() 的返回值。

4

1 回答 1

2

Hashtable#put返回此哈希表中指定键的前一个值,如果没有,则返回 null。在您的情况下,它为空,因为您刚刚创建了实例。

即使从示例中很难理解为什么需要哈希表,这也将起作用。

    Hashtable<String, TextureRegion> test = new Hashtable<String, TextureRegion>();
    TextureRegion texture1 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(m_textureAtlas, p_baseActivity, "Chrysanthemum.jpg", 0, 0);
    test.put("1",  texture1);
于 2013-02-26T09:14:33.427 回答