重开发人员的劳动成果,转载的时候请务必注明出处: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一直检測调用该函数时,就能够实现清空无动作的节点网格。