重开发者的劳动成果,转载的时候请务必注明出处: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一直检测调用该函数时,就可以实现清空无动作的节点网格。
24、Cocos2dx 3.0游戏开发找小三之网格动作:高炫酷的3D动作,布布扣,bubuko.com
时间: 2024-10-24 04:05:47