cocos2d-x骨骼动画使用
发布时间:2020-12-14 16:50:40 所属栏目:百科 来源:网络整理
导读:一、加入Dragonbones支持 二、加载文件 DBCCFactory::getInstance()-loadDragonBonesData(" fileName /skeleton.xml","fileName"); DBCCFactory::getInstance()-loadTextureAtlas(" fileName /texture.xml"," fileName "); 三、调用动画 DBCCArmatureNode *
一、加入Dragonbones支持二、加载文件
DBCCFactory::getInstance()->loadDragonBonesData("fileName/skeleton.xml","fileName");
DBCCFactory::getInstance()->loadTextureAtlas("fileName/texture.xml","fileName");
三、调用动画
DBCCArmatureNode * _armatureNode = nullptr;
this->setOpacity(0);//原来的设置不可见 if(this->getChildByName(ARMATURENODE)){ dynamic_cast<DBCCArmatureNode*>(this->getChildByName(ARMATURENODE))->getAnimation()->gotoAndPlay("动作名称"); }else { _armatureNode = DBCCFactory::getInstance()->buildArmatureNode("fla_tianshu"); _armatureNode->setName(ARMATURENODE); _armatureNode->setScale(0.5); _armatureNode->setPosition(_VEC2(33,42));//设置位置 this->addChild(_armatureNode); _armatureNode->getAnimation()->gotoAndPlay("z_stand"); } if(_armatureNode){ _armatureNode->getCCEventDispatcher()->addCustomEventListener(EventData::COMPLETE,CC_CALLBACK_1(eventHandler,this));//非循环动作结束监听 _armatureNode->getCCEventDispatcher()->addCustomEventListener(EventData::LOOP_COMPLETE,this));//循环动作结束监听 }
四、监听动作结束
void eventHandler(EventCustom *event) { char *stands[] = {"z_stand","z_stand_b"}; EventData *eventData = (EventData*)(event->getUserData()); if (eventData){ DBCCArmatureNode * _armatureNode = dynamic_cast<DBCCArmatureNode*>(this->getChildByName(ARMATURENODE)); if(!_armatureNode){ CCASSERT(_armatureNode != nullptr,"_armatureNode is null"); return ; } switch(eventData->getType()){ case EventData::EventType::COMPLETE:{ if(this->getEnemyType()==EnemyType8){ if(eventData->animationState->name.compare("z_walk") == 0){ if(this->gethandState()==HandTypeLeft){ _armatureNode->getAnimation()->gotoAndPlay("z_skill_z"); }else if(this->gethandState()==HandTypeRight){ _armatureNode->getAnimation()->gotoAndPlay("z_skill_y"); }else{ _armatureNode->getAnimation()->gotoAndPlay("z_stand"); } }else if(eventData->animationState->name.compare("z_skill_z") == 0||eventData->animationState->name.compare("z_skill_y") == 0||eventData->animationState->name.compare("z_dizzy_over")==0){ _armatureNode->getAnimation()->gotoAndPlay("z_stand"); } }else{ if(eventData->animationState->name.compare("z_walk") == 0||eventData->animationState->name.compare("z_dizzy_over")==0){ _armatureNode->getAnimation()->gotoAndPlay("z_stand"); } if(eventData->animationState->name.compare("z_stand_e_z") == 0||eventData->animationState->name.compare("z_stand_e_y") == 0||eventData->animationState->name.compare("z_stand_e_ting_y") == 0||eventData->animationState->name.compare("z_stand_e_ting_z") == 0){ _armatureNode->getAnimation()->gotoAndPlay("z_stand"); this->setchattingState(ChatType0);//修改聊天状态 } if(eventData->animationState->name.compare("z_skill_start_b")==0){ _armatureNode->getAnimation()->gotoAndPlay("z_skill_start_c"); } } }break; case EventData::EventType::LOOP_COMPLETE:{ if(eventData->animationState->name.compare("z_stand_c")==0){ NotificationCenter::getInstance()->postNotification(Enemy_FALL_WATER,this); }else if(this->getEnemyState() != EnemyState2&&eventData->animationState->name.compare("z_target") != 0){ int index = rand()%10; if(index==1){ _armatureNode->getAnimation()->gotoAndPlay(stands[index]); }else{ _armatureNode->getAnimation()->gotoAndPlay(stands[0]); } } if(eventData->animationState->name.compare("z_skill_start_c")==0){ _armatureNode->getAnimation()->gotoAndPlay("z_skill_start_c"); } }break; } } }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |