想制作一个显示伤害数字的组件,平时不显示,受到伤害时显示伤害值,并且逐位跳动,然后消失。
数字的素材初始化时加载到SpriteFrameCache中,显示前根据伤害数字修改组件中相应位置sprite的SpriteFrame,然后显示。
类定义如下:
class DigitSprite : public Node
{
public:
bool init();
CREATE_FUNC(DigitSprite);
void showDigit(int value);
private:
void extendSpriteBatch(int count); //子Sprite数量小于要显示的数位时添加新的Sprite
};
初始化:
bool DigitSprite::init()
{
if (!Node::init())
return false;
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(DIGIT_PLIST_PATH, DIGIT_PNG_PATH);
extendSpriteBatch(DEFAULT_DAMAGE_DIGIT);
setOpacity(255);
return true;
}
需要显示数字时:
void DigitSprite::showDigit(int value)
{
string num = to_string(value);
int avaSpriteCount = getChildrenCount();
int len = num.length();
if (len > avaSpriteCount)
extendSpriteBatch(len - avaSpriteCount);
for (int i
Cocos2d-x中Fade系列Action的Opacity探究

本文探讨了在Cocos2d-x中使用FadeIn和FadeOut时遇到的问题。作者发现FadeIn不起作用,但在FadeOut过程中可以观察到效果。通过调试代码,找到了FadeTo方法是设置节点透明度的关键。问题在于FadeIn和FadeOut同时运行时,由于opacity的同步问题导致FadeIn看似失效。解决办法是先手动设置Opacity为255,然后进行FadeOut操作。
最低0.47元/天 解锁文章
2458

被折叠的 条评论
为什么被折叠?



