Adjust visual tree of counter.

This commit is contained in:
Huo Yaoyuan 2016-09-24 10:19:50 +08:00
parent 0da0d4f35e
commit f4ac1f630d
1 changed files with 34 additions and 26 deletions

View File

@ -9,10 +9,11 @@
namespace osu.Game.Graphics.UserInterface
{
public abstract class KeyCounter : AutoSizeContainer
public abstract class KeyCounter : Container
{
private Sprite buttonSprite;
private Sprite glowSprite;
private Container textLayer;
private SpriteText keySpriteText;
private SpriteText countSpriteText;
@ -54,34 +55,43 @@ public override void Load()
Texture = Game.Textures.Get(@"KeyCounter/key-up"),
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
},
glowSprite = new Sprite
{
Texture = Game.Textures.Get(@"KeyCounter/key-glow"),
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Alpha = 0
},
textLayer = new Container
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Children = new Drawable[]
{
glowSprite = new Sprite
keySpriteText = new SpriteText
{
Texture = Game.Textures.Get(@"KeyCounter/key-glow"),
Text = Name,
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Position = new Vector2(0, -buttonSprite.Height / 4),
Colour = KeyUpTextColor
},
countSpriteText = new SpriteText
{
Text = Count.ToString(),
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Position = new Vector2(0, buttonSprite.Height / 4),
Colour = KeyUpTextColor
}
}
},
keySpriteText = new SpriteText
{
Text = Name,
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Position = new Vector2(0, -buttonSprite.Height / 4),
Colour = KeyUpTextColor
},
countSpriteText = new SpriteText
{
Text = Count.ToString(),
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Position = new Vector2(0, buttonSprite.Height / 4),
Colour = KeyUpTextColor
}
};
glowSprite.Hide();
//Set this manually because an element with Alpha=0 won't take it size to AutoSizeContainer,
//so the size can be changing between buttonSpirit and glowSpirit.
Height = buttonSprite.Height;
Width = buttonSprite.Width;
}
private void UpdateGlowSprite()
@ -89,15 +99,13 @@ private void UpdateGlowSprite()
//can have a FadeTime property or const
if (IsLit)
{
glowSprite.Show();
countSpriteText.FadeColour(KeyDownTextColor, 0);
keySpriteText.FadeColour(KeyDownTextColor, 0);
glowSprite.FadeIn();
textLayer.FadeColour(KeyDownTextColor, 0);
}
else
{
glowSprite.Hide();
countSpriteText.FadeColour(KeyUpTextColor, 0);
keySpriteText.FadeColour(KeyUpTextColor, 0);
glowSprite.FadeOut();
textLayer.FadeColour(KeyUpTextColor, 0);
}
}