我用动画编辑器做了段攻击动画,导入场景代码:armature0已添加为成员变量。
cocostudio::ArmatureDataManager::getInstance()->addArmatureFileInfo(
“attack/attack0.png”,“attack/attack0.plist”,“attack/attack.ExportJson”);
armature0 = cocostudio::Armature::create(“attack”);
armature0->setPosition(240,160);
this->addChild(armature0);
想用按钮控制这段动画播放:
void GameScene::playerAttackCallBack(Object *pSender,TouchEventType type)
{
if(type == TOUCH_EVENT_ENDED){
armature0->getAnimation()->play(“Animation2”);
}
}
这里我想让这个动画在播放的时候不能响应按键,我想用
this->settouchEnable(false);和this->settouchEnable(true);
来控制是否响应按键。
但是我要怎么监听上一次动画什么时候播放完以添加this->settouchEnable(true);呢?
--------------------------------------------------解决--------------------------------------------------------------
.h中加入:
void playerAttavckEndCallBack(Armature *armature, MovementEventType movementType, const std::string& movementID);//加入回调方法
bool isAttacking;//加入判断是否在播放动画的标示符
.cpp中加入:
isAttacking = false;
armature0->getAnimation()->setMovementEventCallFunc(this,movementEvent_selector(GameScene::playerAttavckEndCallBack));//在结束播放armature0里的动画后回调的方法
void GameScene::playerAttackCallBack(Object *pSender,TouchEventType type)//按键回调方法。
{
if (!isAttacking)
{
if(type == TOUCH_EVENT_ENDED){
isAttacking = true;
armature0->getAnimation()->play(“Animation2”);
}
}
}
void GameScene::playerAttavckEndCallBack(Armature *armature, MovementEventType movementType, const std::string& movementID)//动画播放回调方法
{
if (movementType == COMPLETE)//如果动画播放状态是结束
{
isAttacking = false;//将标志位重置
}
}