实现技能释放后图标有逐渐冷却效果。图标被灰色遮盖,灰色逐渐向下褪去直到冷却结束。
原理可以是创建一张图片覆盖在技能图片上方。平时隐藏。技能释放后就显示。图片是一张两倍图标高度的技能遮罩图。上方是完全透明的,下方是灰色半透明。但是只显示图标大小的一部分区域,也就是红色框大小的区域

当技能释放后显示的是最底部的区域,完全灰色,在冷却过程中,显示区域逐渐上移。这样就会慢慢出现一张灰色向下降低的图片遮罩。覆盖在技能图标上方能实现技能冷却效果。
实现改变纹理显示区域,可以用sfml的setTextureRect函数实现,它能够指定显示特定区域的纹理在绘制目标上。
sf::IntRect rect;
rect.left = icon.left;
rect.top = reloadProgress;//区域的上方取决于冷却进度。实现根据冷却时间平移的效果。
rect.width = icon.width;
rect.height = icon.height;
//设定遮罩图片显示区域
skillIconmask->setTextureRect(rect);通过把图片替换成动画序列帧,应该能够实现更多冷却遮罩效果。