AndEngine的SetAlpha方法不影响子实体

3

我在设置子实体的Alpha值时遇到了困难。 我创建了一个矩形实体,并将一个文本实体附加到该矩形上,如下所示:

m_background = new Rectangle(0.0f, 0.0f, m_activity.getCamera().getWidth(), m_activity.getCamera().getHeight(), m_activity.getVertexBufferObjectManager());
m_background.setColor(0.0f, 0.0f, 0.0f);

FontFactory.setAssetBasePath("font/");

final ITexture fontTexture = new BitmapTextureAtlas(m_activity.getTextureManager(), 256, 256, TextureOptions.BILINEAR);
this.m_Font = FontFactory.createFromAsset(m_activity.getFontManager(), fontTexture, m_activity.getAssets(), "Droid.ttf", 48, true, android.graphics.Color.WHITE);
this.m_Font.load();

Text text = new Text(100, 300, this.m_Font, "LoadingScreen", new TextOptions(HorizontalAlign.RIGHT), m_activity.getVertexBufferObjectManager());
    m_background.attachChild(text);

现在我想将此背景实体的Alpha设置为0:
m_background.setAlpha(0.0f);

我原本以为子实体也会受到影响,但事实并非如此。除了直接在子实体上设置alpha之外,我该如何做呢?有更好的方法吗?
谢谢提前帮忙, Zerd
1个回答

5
很抱歉,子实体只会受到其父级(即所附着于的)位置的影响。如果您想拥有一个带有文本的矩形并且对它们两个都应用alpha修饰,那么您可以将alpha应用于文本,或者如果您想经常使用这种概念并且除了修改alpha通道之外还要进行其他操作,则可以创建自己的类。
也许像这样:
public class Background extends Entity {

    private Text text;

    public Background(float x, float y, float width, float height, Font font, String textMessage, VertexBufferObjectManager vertexBufferObjectManager) {
         this.setPosition(x, y);
         this.attachChild(new Rectangle(0, 0, width, height, vertexBufferObjectManager));
         this.text = new Text(0, 0, font, textMessage, vertexBufferObjectManager);
         this.attachChild(text);
    }

    @Override
    public void setAlpha(float pAlpha) {        
         super.setAlpha(pAlpha);
         this.text.setAlpha(pAlpha);
    }   
}

这只是一个例子。如果您需要对矩形进行更多操作(如调整大小等),只需创建自己的方法来处理矩形和文本。唯一自动适用于两者的是位置(我在此将文本放置在矩形的位置0,0处)。

希望这可以帮到您。

  • Christoph

谢谢,Christoph,你知道当使用AlphaModifiers时是否也是这种情况吗?我计划创建一个加载界面。我可以为每个元素做到这一点,因为此场景中的元素不是很多,但我希望有更简单的方法。 - HashtagMarkus
是的,当我测试时也有同样的效果。AlphaModifier只会影响父级精灵。我想你还得在文本上设置另一个AlphaModifier。 - GameDroids

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接