cpp-tests ActionManagerTest
来源:互联网 发布:painter下载mac 编辑:程序博客网 时间:2024/05/16 17:24
~~~~我的生活,我的点点滴滴!!
ActionManagerTest例子里面包括了好几种小例子,不过他们大体是差不多的,都是精灵利用action去展示一些动作,下面我效果图:
这个文件里面包括了好几个类,基本主控制框架一样,这里我们不讲解,我们就拿第一个旋转作为分析例子,看下面源码:
//------------------------------------------------------------------//// ActionManagerTest////------------------------------------------------------------------void ActionManagerTest::restartCallback(Ref* sender){ auto s = new ActionManagerTestScene(); s->addChild(restartActionManagerAction()); //replaceScene替换时会删掉上一次的场景,对比pushScene()与popScene()//看代码里面是递归删除所有子节点并释放 Director::getInstance()->replaceScene(s); s->release();}//对于onEnter()的介绍及与init()等区别见http://blog.csdn.net/ac_huang/article/details/37773369void CrashTest::onEnter(){//必须先调用父类的 ActionManagerTest::onEnter(); auto child = Sprite::create(s_pathGrossini); child->setPosition( VisibleRect::center() ); addChild(child, 1); //1.5s旋转90度 child->runAction(RotateBy::create(1.5f, 90));//DelayTime 表示空白,什么也不做 详见http://blog.csdn.net/ac_huang/article/details/37972017 child->runAction(Sequence::create( DelayTime::create(1.4f), FadeOut::create(1.1f), nullptr) ); runAction( Sequence::create( DelayTime::create(1.4f), CallFunc::create( CC_CALLBACK_0(CrashTest::removeThis,this)), nullptr) );}
初看上面,我觉得runAction()动作他是依次执行,即先花费1.5s旋转,然后在花1.4s等待,最后花费1.1淡出屏幕,但是其实不是这样的,
runAction()虽然看上去他们有先后执行的顺序,其实代码执行到这时,他们都没有执行,他们都是在帧刷新的时候一起执行的(但是runAction
里面的Sequence是有先后顺序的,他为动作序列,想当然会有),那也就意味着1.5s在旋转的时候,后面1.4s的等待同时在进行,然后才是1.1s
的淡出,后面又有一个回调函数去做删除操作,做打断了前面的操作,也就是说runAction()是同时执行的,能强行打断操作,如果把第三个
runAction()里面的等待时间改成2.5s(为什么是2.5s?1.5s做完旋转时淡出运行已经运行了0.1s,所以在只需要1s就能看到淡出完成,所以
是2.5s)就能看到一个完整的过程了。
最后看一下删除,其他的是都是类似的,就不说了。
void CrashTest::removeThis(){//删除自己,包括释放掉内存,有可能不会立即释放,因为内存管理机制是用引用计数的 _parent->removeChild(this, true); nextCallback(this);}
0 0
- cpp-tests ActionManagerTest
- ActionManagerTest
- cpp-tests ActionsEaseTest
- cpp-tests CocosDenshionTest
- cpp-tests ClickAndMoveTest
- cpp-tests ClippingNodeTest--HoleDemo
- cpp-tests FileUtils、FontTest
- cpp-tests IntervalTest(间断)
- cpp-tests Node::Label
- Cocos2d-x3.3RC0 Cpp-test分析之ActionManagerTest
- cpp-tests Node及NodeTest
- How to Run cpp-tests on win32
- How to run cpp-tests on WIN32
- How to run cpp-tests on Android
- How to run cpp-tests on iOS
- cpp-tests ClippingNodeTest--ScrollViewDemo、ShapeTest等
- cpp-tests EffectsTest一些3D特效
- cpp-tests Node::Layer及Node::Menu
- lua string 库
- 链表、头指针、头结点
- URAL 1741 Communication Fiend dp
- Cognos函数(十二) - firstChild & lastChild
- poj 2886 Who Gets the Most Candies?(线段树)
- cpp-tests ActionManagerTest
- Android多媒体学习九:利用MediaRecorder类实现自己的音频录制程序
- HDU1171 Big Event in HDU
- arch普通用户无法进入X
- 啦啦熊励志篇
- Android 根据EditText搜索框ListView动态显示数据
- iOS 8输入法角力场,百度弯道超车?
- Go语言资料收集
- 苹果新的编程语言 Swift 语言进阶(五)--控制流