Cocos2dx--CCMotionStreak的分析、疑问以及尝试的改进(二)

1.背景

    可见第一篇

    上一篇的最后我们说到了试图降低CCMotionStreak类与程序中的其他部分的关联,使之不再向程序的其他模块注入代码。

    下面我们开始着手修改。


2.修改

   a.将CCMotionStreak的头文件和.cpp文件分别拷贝出来,修改类名及类名的引用CCMotionStreak--->MyCCMotionStreak.

   b.增加新的字段

    //added properties
    CCNode *m_parentNode;    //the parent node used for hold this streak to render.
    bool m_isSetFollowNode;  
    CCPoint m_followPoint;   //this is a local point in the follow node space;
    CCNode *m_followNode;    //this is the node which our motion streak wants to follow.

  c.增加新的方法

void MyCCMotionStreak::setFollowNode(CCNode *parentNode, CCNode *node, CCPoint point)
{
    if(node != NULL && m_parentNode != NULL)
    {
        m_parentNode = parentNode;
        m_followNode = node;
        m_followPoint = point;

        m_isSetFollowNode = true;

        m_parentNode->addChild(this);
    }
}

void MyCCMotionStreak::DestroySelf()
{
    this->m_parentNode->removeChild(this);
}

  d.对update方法的修改

<pre name="code" class="cpp">void MyCCMotionStreak::update(float delta)
{
    if(m_isSetFollowNode)
    {
        m_bStartingPositionInitialized = true;
        m_tPositionR = m_parentNode->convertToNodeSpace(m_followNode->convertToWorldSpace(m_followPoint));
    }
    /*
    
    */
}


 


其实修改的目的只是为了将原本写在承载MotionStreak的结点中的代码, 全部转移至MotionStreak类内部。

如果不使用的setFollowNode方法的话,用起来还是和以前一样。


思考:

1.也许cocos2dx自带的CCMotionStreak本来就不是看上去那么简单的用法, 它也许要各其他的一些特效类组合起来,做为一个新的效果类,然后由这个新的类来提供管理。

2.原有的CCMotionStreak类是使用setPosition方法来提供顶点信息, 也许可以使用一些算法来固定的生成一些顶点来供CCMotionStreak使用,创造一些更漂亮的效果。

  自己又欢天喜地的造了个的轮子。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值