I'm having trouble setting Alpha on a child entity. I create a Rectangle entity and attach a Text entity to the rectangle like this:
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);
Now I want to set the Alpha of this background entity to 0:
m_background.setAlpha(0.0f);
I was under the impression that the child entities would be affected as well, is that not the case? How could I do this except by setting alpha directly on the child entities? Is there a better way?
Thanks in advance, Zerd
Unfortunately no, a child entity is only effected by the position of its parent (it's attached). If you want to have a Rectangle with a Text and apply the alpha modification on both of them, either you apply the alpha to the text as well or if you want to use that concept more often and do other stuff besides altering the alpha channel, you create your own class.
Something like this maybe:
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);
}
}
It's just an example. If you need to do more with the rectangle (resizing etc) you just create your own methods that take care of the rectangle as well as of the text. The only thing that is automatically for both is the position (here I place the Text at the position 0,0 of the Rectangle).
Hope this helps
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With