微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – AndEngine SetAlpha不影响子实体

我在为子实体设置Alpha时遇到问题.
我创建一个Rectangle实体并将Text实体附加到矩形,如下所示:

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

解决方法:

遗憾的是,子实体仅受其父级(它的附加)的位置影响.如果你想要一个带有文本的矩形并对它们都应用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);
    }   
}

这只是一个例子.如果你需要对矩形做更多的事情(调整大小等),你只需要创建自己的方法来处理矩形和文本.两者唯一自动的是位置(这里我将Text放在Rectangle的0,0位置).

希望这可以帮助

>克里斯托弗

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐