白くフェードアウトする場合、スプライトに
sprite->setOpacityModifyRGB(false);
と記述してある可能性がある。
SpriteBatchNodeを使用しているかどうかでも変わる(使用していると白くはならない)
void Sprite::updateColor(void)
{
Color4B color4( _displayedColor.r, _displayedColor.g, _displayedColor.b, _displayedOpacity );
// special opacity for premultiplied textures
if (_opacityModifyRGB)
{
color4.r *= _displayedOpacity/255.0f;
color4.g *= _displayedOpacity/255.0f;
color4.b *= _displayedOpacity/255.0f;
}
_quad.bl.colors = color4;
_quad.br.colors = color4;
_quad.tl.colors = color4;
_quad.tr.colors = color4;
// renders using batch node
if (_batchNode)
{
if (_atlasIndex != INDEX_NOT_INITIALIZED)
{
_textureAtlas->updateQuad(&_quad, _atlasIndex);
}
else
{
// no need to set it recursively
// update dirty_, don't update recursiveDirty_
setDirty(true);
}
}
// self render
// do nothing
}
void Sprite::setOpacityModifyRGB(bool modify)
{
if (_opacityModifyRGB != modify)
{
_opacityModifyRGB = modify;
updateColor();
}
}
PR