本文整理汇总了C++中CCBone类的典型用法代码示例。如果您正苦于以下问题:C++ CCBone类的具体用法?C++ CCBone怎么用?C++ CCBone使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CCBone类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: update
void TestColliderDetector::update(float delta)
{
armature2->setVisible(true);
world->Step(delta, 0, 0);
for (std::list<Contact>::iterator it = listener->contact_list.begin(); it != listener->contact_list.end(); ++it)
{
Contact &contact = *it;
//! get armature by fixtrue's user data
CCBone *ba = (CCBone *)contact.fixtureA->GetUserData();
CCBone *bb = (CCBone *)contact.fixtureB->GetUserData();
bb->getArmature()->setVisible(false);
}
}
示例2: CCDICT_FOREACH
void TestColliderDetector::update(float delta)
{
armature2->setVisible(true);
CCRect rect = bullet->boundingBox();
// This code is just telling how to get the vertex.
// For a more accurate collider detection, you need to implemente yourself.
CCDictElement *element = NULL;
CCDictionary *dict = armature2->getBoneDic();
CCDICT_FOREACH(dict, element)
{
CCBone *bone = static_cast<CCBone*>(element->getObject());
CCArray *bodyList = bone->getColliderBodyList();
CCObject *object = NULL;
CCARRAY_FOREACH(bodyList, object)
{
ColliderBody *body = static_cast<ColliderBody*>(object);
CCArray *vertexList = body->getCalculatedVertexList();
float minx, miny, maxx, maxy = 0;
int length = vertexList->count();
for (int i = 0; i<length; i++)
{
CCContourVertex2 *vertex = static_cast<CCContourVertex2*>(vertexList->objectAtIndex(i));
if (i == 0)
{
minx = maxx = vertex->x;
miny = maxy = vertex->y;
}
else
{
minx = vertex->x < minx ? vertex->x : minx;
miny = vertex->y < miny ? vertex->y : miny;
maxx = vertex->x > maxx ? vertex->x : maxx;
maxy = vertex->y > maxy ? vertex->y : maxy;
}
}
CCRect temp = CCRectMake(minx, miny, maxx - minx, maxy - miny);
if (temp.intersectsRect(rect))
{
armature2->setVisible(false);
}
}
示例3: CCArray
CCBone* CCBone::create(bool _isRadian) {
if( !sObjectPool ){
sObjectPool = new CCArray();
CCAssert(sObjectPool->init(), "create CCBone fail!");
}
sPoolIndex++;
if ( sPoolIndex < sObjectPool->count()) {
CCBone* _bone =(CCBone*) sObjectPool->objectAtIndex(sPoolIndex);
return _bone;
}
CCBone *pBone = new CCBone();
if (pBone && pBone->init(_isRadian)){
sObjectPool->addObject(pBone);
pBone->autorelease();
return pBone;
}
CC_SAFE_DELETE(pBone);
return NULL;
}
示例4: CCDICT_FOREACH
void CCArmatureAnimation::setSpeedScale(float speedScale)
{
if(speedScale == m_fSpeedScale)
{
return;
}
m_fSpeedScale = speedScale;
m_fProcessScale = !m_pMovementData ? m_fSpeedScale : m_fSpeedScale * m_pMovementData->scale;
CCDictElement *element = NULL;
CCDictionary *dict = m_pArmature->getBoneDic();
CCDICT_FOREACH(dict, element)
{
CCBone *bone = (CCBone *)element->getObject();
bone->getTween()->setProcessScale(m_fProcessScale);
if (bone->getChildArmature())
{
bone->getChildArmature()->getAnimation()->setProcessScale(m_fProcessScale);
}
}
示例5: removeAllChildren
bool CCArmature::init(const char *name)
{
bool bRet = false;
do
{
removeAllChildren();
CC_SAFE_DELETE(m_pAnimation);
m_pAnimation = new CCArmatureAnimation();
m_pAnimation->init(this);
CC_SAFE_DELETE(m_pBoneDic);
m_pBoneDic = new CCDictionary();
CC_SAFE_DELETE(m_pTopBoneList);
m_pTopBoneList = new CCArray();
m_pTopBoneList->init();
CC_SAFE_DELETE(m_pTextureAtlasDic);
m_pTextureAtlasDic = new CCDictionary();
m_sBlendFunc.src = CC_BLEND_SRC;
m_sBlendFunc.dst = CC_BLEND_DST;
m_strName = name == NULL ? "" : name;
CCArmatureDataManager *armatureDataManager = CCArmatureDataManager::sharedArmatureDataManager();
if(m_strName.length() != 0)
{
m_strName = name;
CCAnimationData *animationData = armatureDataManager->getAnimationData(name);
CCAssert(animationData, "CCAnimationData not exist! ");
m_pAnimation->setAnimationData(animationData);
CCArmatureData *armatureData = armatureDataManager->getArmatureData(name);
CCAssert(armatureData, "");
m_pArmatureData = armatureData;
CCDictElement *_element = NULL;
CCDictionary *boneDataDic = &armatureData->boneDataDic;
CCDICT_FOREACH(boneDataDic, _element)
{
CCBone *bone = createBone(_element->getStrKey());
//! init bone's CCTween to 1st movement's 1st frame
do
{
CCMovementData *movData = animationData->getMovement(animationData->movementNames.at(0).c_str());
CC_BREAK_IF(!movData);
CCMovementBoneData *movBoneData = movData->getMovementBoneData(bone->getName().c_str());
CC_BREAK_IF(!movBoneData || movBoneData->frameList.count() <= 0);
CCFrameData *frameData = movBoneData->getFrameData(0);
CC_BREAK_IF(!frameData);
bone->getTweenData()->copy(frameData);
bone->changeDisplayWithIndex(frameData->displayIndex, false);
}
while (0);
}
update(0);
updateOffsetPoint();
}