COCOS学习笔记--即时动作ActionInstant
来源:互联网 发布:香港中文大学人工智能 编辑:程序博客网 时间:2024/06/06 08:31
Cocos引擎中的动作类的关系图如下:
可以看出,Action是继承自Ref类的,之前我的博客中也有讲过,Ref类是cocos2dx所有类的基类。动作类(Action)是所有动作的基类,它通过create()方法创建的一个对象代表一个动作。动作类(Action)作为基类,实际上是一个接口,动作类的大多数实现类都派生于有限时间动作类(FiniteTimeAction)。在实际开发中我们通常用到两类动作:即时动作(ActionInstant)和持续动作(ActionInterval),它们均继承于有限时间动作类。
注意,动作作用于Node,因此每个create出来的动作对象都需要由Node对象执行。
什么是即时动作?
即时动作(ActionInstant)指能够立刻完成的动作,这类动作是在下一帧立刻完成的动作,也就是说即时动作是没有执行时间的,你一旦runAction()这个动作就会被马上执行。如设定位置、设定缩放等属性。把它们包装成动作后,可以与其他动作类组合为复杂动作。
即时动作ActionInstant类的子类包括:
接下来就举几个使用即时动作的例子:
例1:比如要执行Place动作,Place是通过动作来改变node的位置,其实和setPosition()效果一样:
//创建一个place动作auto _placeAction = Place::create(Vec2(100,100));sprite->runAction(_placeAction);
例2:再比如show、hide,与setVisible()效果一样:
//创建hide动作auto _hideAction = Hide::create();sprite->runAction(_hideAction);//创建show动作auto _showAction = Show::create();sprite->runAction(_showAction);
例3:这里要着重说一个动作:CallFunc,这个动作需要绑定一个回调函数,CallFunc绑定回调函数有2种方法:
方法1.绑定Lamada表达式:
//创建CallFunc动作auto _callFuncAction = CallFunc::create([](){ log("callfunc run finished");});sprite->runAction(_callFuncAction);
方法2.绑定一个函数CCcallback
1).首先在头文件声明callfunc动作的回调函数callfuncCallback
void callfuncCallback();
2).然后在.cpp中实现callfunc动作的回调函数callfuncCallback
void HelloWorld::callfuncCallback(){ log("callfuncCallback!");}
3).最后将CCcallback函数绑定callfunc动作:
auto _callFuncAction = CallFunc::create(CC_CALLBACK_0(HelloWorld::callfuncCallback,this));sprite->runAction(_callFuncAction);
其他动作的也都是通过create()创建,之后一个node执行其runAction()方法,把动作作为参数传入执行。
以上。
- COCOS学习笔记--即时动作ActionInstant
- COCOS学习笔记--持续动作ActionInterval
- cocos 学习笔记(三)动作
- cocos-lua学习笔记(九)动作
- COCOS学习笔记--变速动作Speed和ActionEase
- 即时通信学习笔记
- Cocos学习笔记
- [学习笔记] Cocos Animation
- cocos lua学习笔记
- cocos studio 学习笔记
- COCOS学习笔记--文件系统
- Cocos 学习笔记1
- cocos creater学习笔记
- COCOS学习笔记--Cocos引擎渲染流程
- cocos-2d动作
- Cocos动作(1)
- Cocos动作(2)
- Cocos动作(3)
- 使用ARToolkit时发生的DsRenderer.ax丢失错误
- 【百金轻】:雄关漫道真如铁,而今迈步从头越。
- Android 图片压缩
- iOS 开发 -- 常见坑(PCH问题)
- Linux内核孩子Input子系统
- COCOS学习笔记--即时动作ActionInstant
- Significant Community Contributions
- js怎么定义多个数组
- 闲谈前端编码解码、C#编码解码。
- Android高效加载大图、多图解决方案,有效避免程序OOM
- xp下用双网卡同时上内网和外网
- Java读取properties
- 任何事情都是有规律的,当你总能发现规律的时候,证明你学会了怎么学习(长期维护)
- 给 Android 开发者的 RxJava 详解