请问CCArmature 可以如何半透明?
私聊已解决
序列帧设置透明 2.1.4g版本 需要修改下代码
void CCDisplayManager::setCurrentDecorativeDisplay(CCDecorativeDisplay *decoDisplay)
{
#if ENABLE_PHYSICS_BOX2D_DETECT || ENABLE_PHYSICS_CHIPMUNK_DETECT
if (m_pCurrentDecoDisplay && m_pCurrentDecoDisplay->getColliderDetector())
{
m_pCurrentDecoDisplay->getColliderDetector()->setActive(false);
}
#endif
m_pCurrentDecoDisplay = decoDisplay;
#if ENABLE_PHYSICS_BOX2D_DETECT || ENABLE_PHYSICS_CHIPMUNK_DETECT
if (m_pCurrentDecoDisplay && m_pCurrentDecoDisplay->getColliderDetector())
{
m_pCurrentDecoDisplay->getColliderDetector()->setActive(true);
}
#endif
CCNode *displayRenderNode = m_pCurrentDecoDisplay == NULL ? NULL : m_pCurrentDecoDisplay->getDisplay();
if (m_pDisplayRenderNode)
{
if (dynamic_cast<CCArmature *>(m_pDisplayRenderNode) != NULL)
{
m_pBone->setChildArmature(NULL);
}
m_pDisplayRenderNode->removeFromParentAndCleanup(true);
m_pDisplayRenderNode->release();
}
m_pDisplayRenderNode = displayRenderNode;
if(m_pDisplayRenderNode)
{
CCRGBAProtocol *protocol = dynamic_cast<CCRGBAProtocol *>(m_pDisplayRenderNode);
if(protocol != NULL)
{
protocol->setColor(m_pBone->getColor());
protocol->setOpacity(m_pBone->getOpacity());
}
if (dynamic_cast<CCArmature *>(m_pDisplayRenderNode) != NULL)
{
m_pBone->setChildArmature((CCArmature *)m_pDisplayRenderNode);
}
m_pDisplayRenderNode->retain();
m_pDisplayRenderNode->setVisible(m_bVisible);
}
}
void CCBone::updateColor()
{
setColor(ccc3(_displayedColor.r * m_pTweenData->r / 255, _displayedColor.g * m_pTweenData->g / 255, _displayedColor.b * m_pTweenData->b / 255));
setOpacity(_displayedOpacity * m_pTweenData->a / 255);
CCNode *display = m_pDisplayManager->getDisplayRenderNode();
CCRGBAProtocol *protocol = dynamic_cast<CCRGBAProtocol *>(display);
if(protocol != NULL)
{
protocol->setColor(_realColor);
protocol->setOpacity(_realOpacity);
}
}
私聊已解决
序列帧设置透明 2.1.4g版本 需要修改下代码
void CCDisplayManager::setCurrentDecorativeDisplay(CCDecorativeDisplay *decoDisplay)
{
#if ENABLE_PHYSICS_BOX2D_DETECT || ENABLE_PHYSICS_CHIPMUNK_DETECT
if (m_pCurrentDecoDisplay && m_pCurrentDecoDisplay->getColliderDetector())
{
m_pCurrentDecoDisplay->getColliderDetector()->setActive(false);
}
#endif
m_pCurrentDecoDisplay = decoDisplay;
#if ENABLE_PHYSICS_BOX2D_DETECT || ENABLE_PHYSICS_CHIPMUNK_DETECT
if (m_pCurrentDecoDisplay && m_pCurrentDecoDisplay->getColliderDetector())
{
m_pCurrentDecoDisplay->getColliderDetector()->setActive(true);
}
#endif
CCNode *displayRenderNode = m_pCurrentDecoDisplay == NULL ? NULL : m_pCurrentDecoDisplay->getDisplay();
if (m_pDisplayRenderNode)
{
if (dynamic_cast<CCArmature *>(m_pDisplayRenderNode) != NULL)
{
m_pBone->setChildArmature(NULL);
}
m_pDisplayRenderNode->removeFromParentAndCleanup(true);
m_pDisplayRenderNode->release();
}
m_pDisplayRenderNode = displayRenderNode;
if(m_pDisplayRenderNode)
{
CCRGBAProtocol *protocol = dynamic_cast<CCRGBAProtocol *>(m_pDisplayRenderNode);
if(protocol != NULL)
{
protocol->setColor(m_pBone->getColor());
protocol->setOpacity(m_pBone->getOpacity());
}
if (dynamic_cast<CCArmature *>(m_pDisplayRenderNode) != NULL)
{
m_pBone->setChildArmature((CCArmature *)m_pDisplayRenderNode);
}
m_pDisplayRenderNode->retain();
m_pDisplayRenderNode->setVisible(m_bVisible);
}
}
void CCBone::updateColor()
{
setColor(ccc3(_displayedColor.r * m_pTweenData->r / 255, _displayedColor.g * m_pTweenData->g / 255, _displayedColor.b * m_pTweenData->b / 255));
setOpacity(_displayedOpacity * m_pTweenData->a / 255);
CCNode *display = m_pDisplayManager->getDisplayRenderNode();
CCRGBAProtocol *protocol = dynamic_cast<CCRGBAProtocol *>(display);
if(protocol != NULL)
{
protocol->setColor(_realColor);
protocol->setOpacity(_realOpacity);
}
}