cocos代码研究(8)持续动作子类学习笔记

理论部分

时间间隔动作(ActionInterval)是一个在一段时间内执行的动作。 它有一个开始时间和完成时间。完成时间等于起始时间加上持续时间。

ActionInterval的子类
与位置有关的动作类;
JumpBy,JumpTo,MoveBy,MoveTo,BezierBy,BezierTo,CardinalSplineBy,CardinalSplineTo
与缩放有关的动作类;
ScaleTo,ScaleBy,
与旋转有关的动作类;
RotateBy, RotateTo
与倾斜有关的动作类
SkewTo,SkewBy
与颜色变化有关的动作类
FadeTo,TintBy,TintTo
序列动作有关的动作类
Sequence,Spawn
与时间有关的动作类
DelayTime,Repeat, RepeatForever,ReverseTime,ActionFloat
与进度有关的动作类
ProgressFromTo, ProgressTo
与可见性有关的动作类
Blink
与网格有关的动作类
GridAction
与缓动有关的动作类
ActionEase
与动画有关的动作类
Animate
与3D有关的动作类
ActionCamera,Animate3D
有振幅有关的动作类
AccelAmplitude, AccelDeccelAmplitude,DeccelAmplitude
其他相关动作
ActionTween,TargetedAction

代码部分

JumpBy,JumpTo类的API

static JumpBy * create (float duration, //持续时间,以秒为单位。
            const Vec2 &position, //跳跃的距离。
            float height, //跳跃的高度。
            int jumps) //跳跃的次数。

static JumpTo * create (float duration, //持续时间,以秒为单位。
            const Vec2 &position, //跳跃的目的地的位置。
            float height, //跳跃的高度。
            int jumps) //跳跃的次数。

实例:

    auto actionTo = JumpTo::create(2, Vec2(300,300), 50, 4);
    auto actionBy = JumpBy::create(2, Vec2(300,0), 50, 4);

MoveBy,MoveTo类的API

static MoveBy * create (float duration, //持续时间,以秒为单位。
            const Vec2 &deltaPosition) //位移,Vec2类型。
static MoveBy * create (float duration, //持续时间,以秒为单位。
            const Vec3 &deltaPosition) //位移,Vec3类型。

static MoveTo * create (float duration, //持续时间,以秒为单位。
            const Vec2 &position) //二维世界的目标位置。
static MoveTo * create (float duration, //持续时间,以秒为单位。
            const Vec3 &position) //三维世界的目标位置。

实例:

    auto s = Director::getInstance()->getWinSize();
    auto actionTo = MoveTo::create(2, Vec2(s.width-40, s.height-40));
    auto actionBy = MoveBy::create(2, Vec2(80,80));

BezierBy,BezierTo类的API

static BezierBy * create (float t, //持续时间,以秒为单位。
            const ccBezierConfig &c) //贝塞尔曲线配置。

static BezierTo * create (float t, //持续时间,以秒为单位。
            const ccBezierConfig &c) //贝塞尔曲线配置。

实例:

    // sprite 1
    ccBezierConfig bezier;
    bezier.controlPoint_1 = Vec2(0, s.height/2);
    bezier.controlPoint_2 = Vec2(300, -s.height/2);
    bezier.endPosition = Vec2(300,100);

    auto bezierForward = BezierBy::create(3, bezier);
    auto bezierBack = bezierForward->reverse();
    auto rep = RepeatForever::create(Sequence::create( bezierForward, bezierBack, nullptr));

    // sprite 2
    _tamara->setPosition(80,160);
    ccBezierConfig bezier2;
    bezier2.controlPoint_1 = Vec2(100, s.height/2);
    bezier2.controlPoint_2 = Vec2(200, -s.height/2);
    bezier2.endPosition = Vec2(240,160);

    auto bezierTo1 = BezierTo::create(2, bezier2); 

CardinalSplineBy,CardinalSplineTo类的API

static CardinalSplineBy * create (float duration, //以秒为单位的持续时间。
                PointArray *points, //控制点数组。
                float tension) //曲线张力。

static CardinalSplineTo * create (float duration,
                PointArray *points, //控制点数组。
                float tension) //曲线张力。

实例:

    auto s = Director::getInstance()->getWinSize();

    auto array = PointArray::create(20);
    array->addControlPoint(Vec2(0, 0));
    array->addControlPoint(Vec2(s.width/2-30,0));
    array->addControlPoint(Vec2(s.width/2-30,s.height-80));
    array->addControlPoint(Vec2(0, s.height-80));
    array->addControlPoint(Vec2(0, 0));

    auto action = CardinalSplineBy::create(3, array, 0);

注,CardinalSplineBy,CardinalSplineTo有个子类继承者CatmullRomTo,CatmullRomBy,区别就是设置默认设定张力0.5,不可改。

ScaleTo,ScaleBy类的API

static ScaleTo * create (float duration, //持续时间,以秒为单位。
            float s) //X和Y轴的缩放比例。

static ScaleTo * create (float duration, //持续时间,以秒为单位。
            float sx, //X轴缩放比例。
            float sy) //Y轴缩放比例。

static ScaleTo * create (float duration, //持续时间,以秒为单位。
            float sx, //X轴缩放比例。
            float sy, //Y轴缩放比例。
            float sz) //Z轴缩放比例。

实例:

    auto actionTo = ScaleTo::create(2.0f, 0.5f);
    auto actionBy = ScaleBy::create(2.0f, 1.0f, 10.0f);

RotateBy, RotateTo类的API

static RotateBy * create (float duration, //持续时间,以秒为单位。
             float deltaAngle) //旋转角度。

static RotateBy * create (float duration, //持续时间,以秒为单位。
            float deltaAngleZ_X, //X轴旋转角度,以角度值计。
            float deltaAngleZ_Y) //Y轴旋转角度,以角度值计。

static RotateBy * create (float duration, //持续时间,以秒为单位。
             const Vec3 &deltaAngle3D) //三维旋转角度。

static RotateTo * create (float duration, //持续时间,以秒为单位。
            float dstAngleX, //X轴的目标角度,以角度值计。
            float dstAngleY) //Y轴的目标角度,以角度值计。

static RotateTo * create (float duration, //持续时间,以秒为单位。
            float dstAngle) //目标角度,以角度值计。

static RotateTo * create (float duration, //持续时间,以秒为单位。
            const Vec3 &dstAngle3D) //三维旋转角度。

实例:

    auto actionTo = RotateTo::create(2, 180, 180);
    auto actionToBack = RotateTo::create(2, 0, 0);
    auto actionBy = RotateBy::create(2, 0.0f, 360);

SkewTo,SkewBy类的API

static SkewTo * create (float t, //持续时间,以秒为单位。
            float sx, //X轴目标倾斜角度。
            float sy) //Y轴目标倾斜角度。

static SkewBy * create (float t, //持续时间,以秒为单位。
            float deltaSkewX, //X轴倾斜角。
            float deltaSkewY) //Y轴倾斜角。

实例:

    auto actionTo = SkewTo::create(2, 37.2f, -37.2f);
    auto actionToBack = SkewTo::create(2, 0, 0);
    auto actionBy = SkewBy::create(2, 0.0f, -90.0f);
时间: 2024-10-14 11:40:05

cocos代码研究(8)持续动作子类学习笔记的相关文章

cocos代码研究(5)Action学习笔记

理论部分 Action类也是cocos核心基础类之一,在游戏中起着非常重要的作用,继承自Ref,被 FiniteTimeAction(有限时间动作), Follow , 以及 Speed 继承. 有限时间动作可以划分成: 即时动作(ActionInstant),即时动作只能够立刻完成的动作,这类动作是在下一帧立刻完成的动作,如设定位置.设定缩放等.把它们包装成动作后,可以与其他动作类组合为复杂动作. 持续动作(ActionInterval),在规定的时间内,执行完成对象属性,位置,特效,序列动作

cocos代码研究(1)Node学习笔记

理论部分 Node类继承自Ref类,是cocos框架中基础底层的一个封装类,与画面渲染相关的类一般都是继承自该类,例如Scene,Layer,Sprite,Sprite3D,Label,SpriteBatchNode,MenuItem,ClippingNode,DrawNode,ParticleBatchNode, ParticleSystem等都是继承自Node类. 代码部分 父子节点关系API virtual void addChild (Node *child)添加一个子节点到容器内,z-

cocos代码研究(2)Layer学习笔记

auto layer = Layer::create(); /*************华丽分割线*************/ auto layer = LayerColor::create(Color4B(255, 0, 0, 255), 150, 150); /*************华丽分割线*************/ auto layer = LayerGradient::create(Color4B(255, 0, 0, 255), Color4B(255, 255, 0, 255

cocos代码研究(1)sprite学习笔记

各种方法创建Sprite和Animate //图片创建法 参数一:图片资源路径 参数二:Rect选区 auto sprite = Sprite::create("Images/grossini_dance_atlas.png", Rect(x, y, 85, 121)); addChild(sprite); /*************华丽分割线*************/ //BatchNode类纹理创建法 //参数一:纹理图片 参数二:容量(子节点数量上限) auto batchN

cocos代码研究(7)即时动作子类学习笔记

理论部分 即时动作是会立即被执行的动作.他们没有持续时间动作(ActionInterval)的持续时间属性.继承自 FiniteTimeAction.被 CallFunc, FlipX, FlipY, Hide, Place, RemoveSelf, ReuseGrid, Show, StopGrid , 以及 ToggleVisibility 继承. FlipX,FlipX可以立即水平翻转一个精灵. FlipY,FlipY可以立即垂直翻转一个精灵. Hide,隐藏动作用来立即隐藏一个节点. S

cocos代码研究(6)有限时间动作类(FiniteTimeAction)学习笔记

理论部分 有限时间动作类继承自Action类,被 ActionInstant(即时动作) , 以及 ActionInterval(持续动作) 继承. 即时动作是会立即被执行的动作,被 CallFunc, FlipX, FlipY, Hide, Place, RemoveSelf, ReuseGrid, Show, StopGrid , 以及 ToggleVisibility 继承. 时间间隔动作(ActionInterval)是一个在一段时间内执行的动作. 它有一个开始时间和完成时间,完成时间等

cocos代码研究(14)Widget子类Button学习笔记

理论基础 表示一个按钮组件. 按钮可以被按下,或者点击, 并且在按下或者点击之后,可以由用户指定一个动作来执行,继承自 Widget. 代码部分 static Button * create ()创建一个空的按钮. static Button * create (const std::string &normalImage, //正常状态纹理的名字.const std::string &selectedImage="", //选中状态纹理名称.const std::st

cocos代码研究(25)Widget子类PageView学习笔记

基础理论 ListView控件是一个显示滚动项目列表的视图组. 列表项是通过使用addChild或insertDefaultItem插入到列表中的,继承自ScrollView. 代码实践 static ListView * create()创建一个空ListView. void setItemModel (Widget *model)设定一个ListView的模型. 当调用pushBackDefaultItem,该模型将作为一个蓝图,新副本将被插入到ListView控件. void pushBa

cocos代码研究(26)Widget子类RichView学习笔记

理论部分 一个显示多个RichElement的容器类. 我们可以使用它很容易显示带图片的文本,继承自 Widget. 代码实践 static RichText * create ()创建一个空的RichText void insertElement (RichElement *element, int index)在指定位置插入一个RichElement. void pushBackElement (RichElement *element)在容器最后插入一个RichElement. void