总结下cocos2dx的这些动作,知识大概的总结,不是包含所有。文中的名词是自己取得。
首先我们要把握主线,我们在cocos2dx用到的动作都是派生自Action类,而Action又派生自Ref类。而我们主要用到的时属于Action派生的FiniteTimeAction(有限时间的动作类)类所派生的类。
FiniteTimeAction中得有限时间类又分为两个部分,一个部分是瞬时动作类(ActionInstant),也就是执行时你是看不到过程,只能看到结果。一部分是ActionInterval(持续动作类),这类动作都是有持续时间的。
1.框架:
Action类派生出:FiniteTimeAction
#FiniteTimeAction类派生出:ActionInstant类和ActionInterval类
##ActionInstant类派生出:CallFunc类、FlipX、Hide、Place(这里只是列出我常用的)
##ActionInterval类派生出:又分为两大类,一大类是纯持续动作类、一大类是动作包装类(这是我自己细分的)
其中纯持续动作类包括:BezierBy(To)(贝兹尔曲线动作)、Blink(闪烁动作)、FadeIn(Out)、JumpBy(To)(跳转动作,指定起跳位置、高度、次数)、RotateBy(To)、ScaleBy(To)(拉伸动作)。
其中一般By是相对的意思当前位置或者倍数,To是指定绝对。第一个参数都是指定持续时间。
其中动作包装类包括::Repeat、RepeatForever、Sequence、Spawn,动作包装类对所包装的动作有一定副作用,其副作用一般可顾名思义。
如上,Repeat包装后的动作就是重复指定次数被包装的动作、RepeatForever则是持续不断、Sequence可以包装多个动作、其副作用是让多个动作顺序执行
Spawn包装后的动作的副作用是,所有动作一起执行。
2.动作的创建:
一般动作的创建是调用相应动作的类的create工厂方法。
3.动作的执行:
一般动作的是发送runAction消息给指定的Sprite对象,传入参数就是动作对象。
4.几个重要动作Sequence、Spawn、CallFunc
Sequence动作的使用就是如代码:
auto actions = Sequence::create(action1,action2,...,actionN, NULL);
sprite->runAction(actions);
Spawn的使用也一样,知识把关键字替换掉
CallFunc动作是我们就称为回调动作把(或者说是把函数转化为动作),传入的第二个函数指针需要通过callFunc_selector格式化该函数指针。
auto actionCF= CallFunc::create(this, callFunc_selector(HelloWord::sayLove));