RunAction测试
来源:互联网 发布:log4j 输出sql语句 编辑:程序博客网 时间:2024/06/06 07:26
源码:
//看看runAction
CCAction * CCNode::runAction(CCAction* action)
{
CCAssert( action !=NULL, "Argument must be non-nil");
m_pActionManager->addAction(action,this, !m_bRunning); //往ActionManager加入了该动作
return action;
}
//看看ActionManager是做什么.....
void CCActionManager::addAction(CCAction *pAction,CCNode *pTarget, bool paused)
{
CCAssert(pAction != NULL,"");
CCAssert(pTarget != NULL,"");
tHashElement *pElement = NULL;
// we should convert it to CCObject*, because we save it as CCObject*
CCObject *tmp = pTarget;
HASH_FIND_INT(m_pTargets, &tmp, pElement);
if (! pElement)
{
pElement = (tHashElement*)calloc(sizeof(*pElement),1);
pElement->paused = paused;
pTarget->retain();
pElement->target = pTarget;
HASH_ADD_INT(m_pTargets,target, pElement);
}
actionAllocWithHashElement(pElement);
CCAssert(! ccArrayContainsObject(pElement->actions, pAction),"");
ccArrayAppendObject(pElement->actions, pAction);
pAction->startWithTarget(pTarget); //执行动作
}
只要runAction 马上就会执行该动作, 与其他动作同时执行, 所以可能会产生预想不到的效果, 建议runAction前最好是stopAction先.
//这段代码可以看出, moveBy2先执行完,而moveBy其实也是同时执行的(比较隐形)
CCActionInterval *moveBy = CCMoveBy::create(20, ccp(-size.width/2,-size.height/2));
CCActionInterval *moveBy2 = CCMoveBy::create(2, ccp(size.width/2,size.height/2));
CCSprite *spx = CCSprite::create("HelloWorld.png");
spx->setPosition(CCPointZero);
spx->runAction(moveBy);
spx->runAction(moveBy2);
this->addChild(spx);
//修改了moveBy时间, 发现图片不动, 说明runAction可以同时执行多个动作
CCActionInterval *moveBy = CCMoveBy::create(2, ccp(-size.width/2,-size.height/2));
CCActionInterval *moveBy2 = CCMoveBy::create(2, ccp(size.width/2,size.height/2));
CCSprite *spx = CCSprite::create("HelloWorld.png");
spx->setPosition(CCPointZero);
spx->runAction(moveBy);
spx->runAction(moveBy2);
this->addChild(spx);
- RunAction测试
- 关于runAction
- cocos2d-x简单的runAction
- CCSprite runAction 无效的原因
- 小坑+1 runAction 顺序
- 用node runAction实现定时器
- 笨小五工作笔录之-runAction动作篇
- 我的struts runAction的简单实现
- cocos2d-x 中CCLayer runAction没有效果 原因
- runaction后,节点上的所有child锚点偏移
- 5.关于精灵runAction无效果的bug的解决方案。
- cocos2-d-x之runAction与clone的不解之缘
- 在runAction中一个CallFuncN中的Node参数传入时机
- QTP学习第四天——sub、Function和RunAction的学习
- Cocos2dx中如何让runAction函数执行完后再执行后续程序
- 为啥你runAction的时候,必须stopAllActions..不然就会不按照你的预期
- cocos js 怎样在 runAction(cc.sequence(a1, a2)); 后执行一个回调函数?
- cocos2dx的runAction: 重复执行,多个动作连接执行,多个动作同时执行的实现
- discuz 二次开发后台调用编辑器的方法!
- PAT (Basic Level) Practise (中文)1014. 福尔摩斯的约会 (20)
- android 限制广播消息的接收者
- HDU 4546 比赛难度(优先队列)
- git环境配置
- RunAction测试
- 透视表提取不重复记录(5)-不能用于下拉选项
- Visual Studio 2010 断点无法调试
- ubuntu14.04下安装samba服务器
- Terasoluna的优点
- 访问数据的方法
- test2
- iOS网络编程之NSStream
- Hive文件详解