Cocos2d-x CCActionInterval(2)
来源:未知 责任编辑:责任编辑 发表时间:2013-11-26 22:12 点击:次
p>CCFiniteTimeAction *action=getAnimate();//获得炸弹播放动画,自己实现的函数
p>CCAction *sequneceAction = CCSequence::actions(
p> CCRepeat::actionWithAction(action,5),
p> CCCallFunc::actionWithTarget(this, callfunc_selector(Bomb::deadOnCallback)),
p> NULL);
p>sprite->runAction(sequneceAction);
p>
p>
p>2.CCRepeatForever:永远执行一个动作
p>static CCRepeatForever * CCRepeatForever ::actionWithAction (CCActionInterval *pAction)
p> 使用举例:比如,一个精灵我只会改变他的位置,但是不需要改变他的动画,那么我就可以使用这个来保持这个动画一直运行,我在炸弹人的Monster类中使用了类似代码:
p>CCActionInterval *action=getAnimate();//获得炸弹播放动画,自己实现的函数
p>spirte->runAction(CCRepeatForever::actionWithAction(action));
p>
p>3.CCSequence:按序列执行动作,这会让节点连续执行几个动作。
p>static CCFiniteTimeAction * CCSequence::actions (CCFiniteTimeAction *pAction1,...)
p>使用举例:这个例子经常使用的时候,就是执行一个动作,然后回调。比如主角行走一个格子后,切换为站立状态。我在炸弹人的Hero类中使用了这种方法:
p>CCAction *sequneceAction = CCSequence::actions(moveByAction,CCCallFunc::actionWithTarget(this, callfunc_selector(Hero::moveDoneCallback)),NULL);
p> this->runAction(sequneceAction);
p>注意最后要使用NULL结尾。表示传参结束。我不明白为什么非要强制加NULL,按道理说C++不定参数表,可以不用NULL的。看源代码才发现,里面用到了真值判断刷循环。我不知道这是为了和ObjectiveC语法保持一致还是为什么,我并不熟悉Objc。
p>CCFiniteTimeAction* CCSequence::actions(CCFiniteTimeAction *pAction1, ...)
p>{
p> va_list params;
p> va_start(params, pAction1);
p>
p> CCFiniteTimeAction *pNow;
p> CCFiniteTimeAction *pPrev = pAction1;
p>
p> while (pAction1)
p> {
p> pNow = va_arg(params, CCFiniteTimeAction*);
p> if (pNow)
p> {
p> pPrev = actionOneTwo(pPrev, pNow);
p> }
p> else
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>