有这样一个需求,角色执行多个动作,比如奔跑,同时执行闪烁效果, 闪烁后有事件动作
这需要一个方法,停止除闪烁外的其他动作 ,可是好像拿不到CCNode当前执行的动作列表
CCActionManager 是保存了这个列表 ,通过循环取得
for (tHashElement *element=m_pTargets; element != NULL; element = (tHashElement *)element->hh.next)
请教,如何在不改引擎的情况下获取CCNode的动作列表呢
有这样一个需求,角色执行多个动作,比如奔跑,同时执行闪烁效果, 闪烁后有事件动作
这需要一个方法,停止除闪烁外的其他动作 ,可是好像拿不到CCNode当前执行的动作列表
CCActionManager 是保存了这个列表 ,通过循环取得
for (tHashElement *element=m_pTargets; element != NULL; element = (tHashElement *)element->hh.next)
请教,如何在不改引擎的情况下获取CCNode的动作列表呢
给每个action设置tag,保存当前播放的action tag,通过tag做操作
这当然可以,只不过每次添加action都要设一个tag,stop的时候按tag去停止 麻烦
现在Action都交由ActionManager接管,而不是由各Node独自管理,所以应该也没什么好的办法来或者。
确实没有,动作切换比较频繁的情况下,只是想排除几个带ccfun的事件,每个action记录tag好麻烦啊
以后版本能不能加一个 …
暂时改动了一下CCActionManager,麻烦的是每次引擎更新都要跟着改
CCArray* CCActionManager::getRunningActions(CCObject pTarget)
{
CCArray arr=new CCArray;
arr->autorelease();
tHashElement pElement = NULL;
HASH_FIND_INT(m_pTargets, &pTarget, pElement);
if (pElement)
{
unsigned int limit = pElement->actions->num;
for (unsigned int i = 0; i < limit; ++i)
{
CCAction pAction = (CCAction)pElement->actions->arr;
arr->addObject(pAction);
}
}
return arr;
}*
CCAction* act ;
可以用如下这个检查节点有没有runAction吧?
act->getTarget()!=NULL