• 24、Cocos2dx 3.0游戏开发找小三之网格动作:高炫酷的3D动作


    重开发人员的劳动成果,转载的时候请务必注明出处http://blog.csdn.net/haomengzhu/article/details/37596763


    网格动作类似于动作特效,能够实现翻转、震荡、抖动、水的波纹等效果。


    网格的基类:
    GridBase* Grid 
    获取或设置该节点的网格特效状态。

    网格应用于画图平面上,能够实现水纹等 3D 特效;


    基类定义:cocos2d/2d/CCGrid.h中。

    基于这个基类有两个子类:
    Grid3D
    TiledGrid3D
    这两个子类的共同点是:网格的每一个子块都能够分离出来。

    集成关系代码:
    class CC_DLL GridBase : public Ref
    
    class CC_DLL Grid3D : public GridBase
    
    class CC_DLL TiledGrid3D : public GridBase

    网格一般不直接应用。仅仅须要明确Grid3D和TiledGrid3D 。了解网格动作是基于网格的就可以。
    执行网格动作的节点就像是被分成了大小同样的非常多个矩形,通过这些矩形的动作来形成总体的网格动作,
    16X12的网格执行的非常快,可是效果并非非常好。
    32X24的网格看起来效果不错。可是有时间执行起来不会太快。


    使用网格动作之前,须要取消OpenGL的深度检測:
    调用      
      Director::getInstance()->setDepthTest(true);

    网格动作和普通的动作的使用方式是一样的。能够通过runAction来执行动作,
    详细的动作例如以下表所看到的:


    部分网格动作的执行效果如图所看到的:







    在使用网格动作时,网格动作结束之后,须要把网格清空:
    void TextLayer::checkAnim(float dt)
    {
        //auto s2 = getChildByTag(kTagBackground);
        if ( _gridNodeTarget->getNumberOfRunningActions() == 0 && _gridNodeTarget->getGrid() != NULL)
            _gridNodeTarget->setGrid(nullptr);;
    }

    首先找到目标节点,然后检測目标节点是否还有动作,假设没有而且网格不为空。则调用setGrid函数并传入空參数(nullptr)
    就能够清空网格;
    当使用schedule一直检測调用该函数时,就能够实现清空无动作的节点网格。




  • 相关阅读:
    linux格式化新硬盘并挂载,设置开机自动挂载
    各大名企的笔试面试题
    web2.0 Color
    选调生面试题
    网站流量概要分析
    css下拉菜单演示
    子查询
    技巧
    CMM与软件生命周期
    学习方法之PHP
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6785114.html
Copyright © 2020-2023  润新知