zoukankan      html  css  js  c++  java
  • cocos2d-x Action中的两个特殊动作:TargetedAction和ActionFloat

    TargetedAction

    TargetedAction类的官方注释;

    /** @class TargetedAction

    • @brief Overrides the target of an action so that it always runs on the target
    • specified at action creation rather than the one specified by runAction.
      */
      --在操作创建中指定,而不是由运行操作指定的。
    //这里的重点是girl应该怎样才能在boy做完action后执行她的动作呢?有以下几种办法  
    //1、用延迟的DelayTime来实现,也就是boy运动完后延迟几秒,然后让girl运动  
      
    //延迟2.5s,用1s时间跳了3次,跳跃高度100像素,并且向右移动了30像素  
    girl->runAction(Sequence::create(DelayTime::create(2.5f),JumpBy::create(1.0f,Point(30,0),100,3),NULL));  
      
      
    //2、用回调函数实现,当boy完成后,写一个lambda表达式来实现girl要做的动作(lambda表达式的使用可以参考我上一篇博客)  
      
    boy->runAction(Sequence::create(RotateBy::create(1.0f,360),ScaleTo::create(1.0f,1.2f),  
            CallFunc::create([=]()  
            {  
                //用1s时间跳了3次,跳跃高度100像素,并且向右移动了30像素  
                girl->runAction(JumpBy::create(1.0f,Point(30,0),100,3));  
            }),NULL));  
      
              
    //3、用现成的接口TargetedAction();  
      
    auto jump = JumpBy::create(1.0f,Point(30,0),100,3);//先写一个跳跃的动作  
    auto targetAct = TargetedAction::create(girl,jump);//写一个目标动作,将动作执行人girl和要执行的动作jump放入其中  
    //将girl的目标动作放入boy的sequence里去  
    boy->runAction(Sequence::create(RotateBy::create(1.0f,360),ScaleTo::create(1.0f,1.2f),targetAct,NULL));
    

    ActionFloat

    ActionFloat:创建一个自定义起始和终止状态的动作,

    auto actionfloat = ActionFloat::create(3, 2, 5, [this](float value) {
        _tamara->setScale(value);
    });    // 让执行动作的sprite在3秒内从2倍大小放大到5倍。
    

    接收规定的时间、动作的起始值、动作的终止值以及一个回调函数。根据当前时间进度百分比,动作应被设定的值传递回调函数的参数。
    以上面的例子为例,比如规定的时间过去一半时,会向回调函数中传递2 + (5 - 2) * 0.5 = 3.5,所以此时执行动作的sprite应被放大到原尺寸的3.5倍。实现上同样很简单,首先在startWithTarget()中计算出终止值与起始值之差_delta,然后在update()中计算出当前动作应被设定的值,以此值调用回调函数。

    // 当前动作应被设定的值。实现上用的是5 - (5 - 2) * 0.5 = 3.5,一样。
    float value = _to - _delta * (1 - delta);
    
    if (_callback)
    {
        _callback(value);
    }
    

    参考资料

  • 相关阅读:
    在响应式项目中连接设计与开发
    社交APP的痛点及九大流派解析,微信陌陌,咱还约吗
    网传奶茶妹将进入红杉资本
    OLE、OCX和ActiveX控件之间的比较
    Unity3D网络游戏实战(第2版)
    离婚?在Facebook上把已婚状态改为单身就可以!
    同样酷炫但却失败了的谷歌眼镜,能否给Apple Watch一些前车之鉴?
    Apple Watch首批评测放出:有吐槽、有体贴……毒哭了,暖哭了
    如何培养战略领导力,赢得“长久游戏”?
    博客社交已死,数据社交“永生”
  • 原文地址:https://www.cnblogs.com/holm/p/13714979.html
Copyright © 2011-2022 走看看