2012-12-13 38 views
3

我在設置子實體上的Alpha時遇到問題。 我創建一個矩形實體,並且附上文字實體矩形這樣的:AndEngine SetAlpha不影響子實體

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); 

現在我想設置阿爾法此背景下實體爲0:

m_background.setAlpha(0.0f); 

我的印象兒童實體也會受到影響,是不是這種情況?除了直接在子實體上設置alpha,我怎麼能這樣做呢?有沒有更好的辦法?

由於提前, Zerd

回答

5

不幸的是沒有,子實體僅受其父的影響位置(它附後)。如果你想要一個帶有文本的矩形並在它們兩個上應用阿爾法修改,你可以將阿爾法應用到文本中,或者如果你想更頻繁地使用這個概念並且除了改變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位置)。

希望這有助於

  • 克里斯托夫
+0

感謝克里斯託弗,你知道,如果使用AlphaModifiers時,這也是如此呢?我正在計劃創建一個加載屏幕。我可以爲每個元素做這件事,因爲在這個場景中沒有那麼多元素,但我希望有一個更簡單的方法 – HashtagMarkus

+0

是的,當我測試它時效果是一樣的。 AlphaModifier只會影響父Sprite。我想你必須在文本上設置另一個AlphaModifier。 – GameDroids