zoukankan      html  css  js  c++  java
  • Cocos2Dx(3)——动作类备忘

    1. CCAction是cocos2d-x中的动作类,继承自CCObject,动作类必须依托与CCNode及其子类对象来发回作用。CCAction的子类包括有限时间动作CCFiniteTimeAction、跟随CCFollow、移动速度CCSpeed,其中CCFiniteTimeAction包括瞬时动作CCActionInstant和延时动作CCActionInterval。

    2. CCAction的子类CCActionInstant是瞬时动作类,表示直接调用结果的动作,中间不产生动画效果;而CCActionInterval的动作过程会形成动画效果。

    2. 1 CCNode实例产生移动动作的步骤:

    (1) 通过CCActionInterval的子类的create函数,传入相应参数,创建相应的动作实例。

    (2) 调用CCNode类的runAction(action)函数,将action实例传入,执行相应动作。

    2.2 CCActionInterval的子类中很多都是XXXTo和XXXBy的类,通常XXXBy是XXXTo的子类,其中XXXTo是动作的绝对执行,而XXXBy是动作相对执行。

    如CCActionInterval* moveto = CCMoveTo::create(2, ccp(10,10));

    CCActionInterval* moveby = CCMoveBy::create(2, cpp(10,10));

    CCNode类实例执行moveto动作时,不论当前所在位置,是直接移动到点(10,10)处,而执行moveby动作时,是在当前位置的基础上,在x和y轴都移动10个单位。如果原本所在点为(50,50),则执行moveto后位置为(10,10),而执行moveby后位置为(60,60).

    2.3 通常XXXTo的reverse()方法为空,而XXXBy的reverse()方法获得一个逆动作。

    3. 组合动作类包括CCSequence、CCSpawn、CCRepeat和CCRepeatForever

    3.1 CCSequence表示一个动作执行序列,定义动作序列,使用CCArray数组或者传入所有动作,最后结尾参数设置为NULL,可以执行多个动作

    CCFiniteTimeAction* seq = CCSequence::create(action1, action2, NULL);

    sprite->runAction(seq);

    3.2 CCSpawn表示被合成的动作同时进行,定义方法与CCSequence类似。

    CCAction* spawn  = CCSpawn::create(CCJumpBy::create(2, ccp(300,0), 50, 4), CCRotateBy::create(2, 720), NULL);

    sprite->runAction(spawn);

    3.3 CCRepeat 和CCRepeatForever使动作重复进行,CCRepeat类可以指定重复次数,CCRepeatForever则是一直重复。

    CCActionInterval* repeat = CCRepeat::create((CCFiniteTimeAction*)seq->copy()->autorelease(), 10);

    sprite->runAction(repeat);

    4. 跟随动作CCFollow

    CCFollow是一个节点跟随另一个节点的动作。

    sprite->runAction(firstAction);

    this->runAction(CCFollow::create(sprite, CCRectMake(0, 0, 100,100)));

    第一个参数是跟随的节点,第二个参数是运动的边界。

    5. 可调整速度动作CCSpeed类

    CCSpeed类不是一个独立的动作,它是对目前动作的一个包装,可以实现慢动作和快进效果。

    6. 动作延时类CCDelayTime

    CCDelayTime就是使动作咽喉一段固定时间。

    CCActionInterval* delay = CCSequence::create(moveto, CCDelayTime::create(2), moveto), NULL);

    sprite->runAction(delay);

    create函数传入的参数即延后的秒数。

    7. 改变动作执行对象CCTargetedAction

    通常默认的动作执行对象是调用runAction的对象,而CCTargetedAction可以改变动作执行对象。

    CCTargetedAction* t = CCTargetedAction::create(sprite2, moveto);

    sprite->runAction(CCSequence::create(moveto, t, moveto, NULL));

    sprite先moveto,然后sprite2执行moveto,最后sprite执行moveto。

    8. 函数回调动作CCCallFunc

    动作完成后需要做的一些数据处理可以通过CCCallFunc及其子类实现。

    CCCallFunc其回调函数不含参数,CCCallFuncN以CCNode指针为参数,CCCallFuncND则是以CCNode指针和一个数据指针做参数。

  • 相关阅读:
    unsupported jsonb version number 123
    如何在MPlayer上支持RTSP
    TDengine 时序数据库的 ADO.Net Core 提供程序 Maikebing.EntityFrameworkCore.Taos
    如何使用IoTSharp对接ModBus?
    如何从源码启动和编译IoTSharp
    Asp.Net Core 自动适应Windows服务、Linux服务、手动启动时的内容路径的扩展方法
    MQTTnet 的Asp.Net Core 认证事件的扩展
    Asp.Net Core 中利用QuartzHostedService 实现 Quartz 注入依赖 (DI)
    The remote certificate is invalid according to the validation procedure 远程证书验证无效
    settings插拔式源码
  • 原文地址:https://www.cnblogs.com/litterrondo/p/3093677.html
Copyright © 2011-2022 走看看