`
810364804
  • 浏览: 819882 次
文章分类
社区版块
存档分类
最新评论

【Cocos2d-X开发学习笔记】第19期:动作管理类(CCActionManager)的使用

 
阅读更多

本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010

一、动作管理类

动作管理类CCActionManager是一个管理所有动作的单例,工作原理是:当CCNode执行runAction时,该函数会

动作通过动作管理类的addAction函数将对象传递给CCActionManager的单例,该实例再把这个动作添加到自己的

动作序列中。

动作管理单例通过定时刷新自己的update方法,在这个方法中去调用行为序列中每个动作的step(暂停的行为不

会update),这些step方法再根据自身的完成进度去update或是结束行为。

实际上是由动作管理单例驱动的每个动作去更新自己的逻辑,而runAction方法只是将行为对象添加进

CCActionManager的待执行队列。当节点被清除或是行为结束时,动作管理类会自动将动作从队列中删除,不需要程

员的管理。

一般情况下,不需要使用这个单例来管理动作,可以使用CCNode类的stopAction、stopActionByTag和

stopActions等函数来管理、但是有两种情况需要使用CCActionManager类单例:

<1> 动作的执行者不是同一个节点。

<2> 需要暂停/重启活动时。

CCActionManager类的继承关系如下图所示。

二、CCActionManager类的主要函数

CCActionManager类的主要函数见如下图所示。

三、CCActionManager类的使用

之前提到过,不要轻易使用动作管理类,除非是不同动作目标和需要暂停/重启动作。这里的例子就是需要暂停/

启动作时使用。

1、项目示例。

<1> 首先新建Cocos2D-X项目,取名为“MyCCActionManager”,然后在HelloWorldScene.h文件中声明成员函数。

void resumeGrossini(float time);

<2> 在HelloWorldScene.cpp文件中的init函数中添加如下所示代码。

bool HelloWorld::init()
{
    bool bRet = false;
    do 
    {
        CC_BREAK_IF(! CCLayer::init());

		//获得尺寸大小
		CCSize s = CCDirector::sharedDirector()->getWinSize();

		//添加标签
        CCLabelTTF* l = CCLabelTTF::create("Grossini only rotate/scale in 3 seconds", "Thonburi", 16);
		addChild(l);
		l->setPosition(ccp(s.width/2, s.height/2 + 120));

		//添加精灵
		CCSprite* pGrossini = CCSprite::create("grossini.png");
		addChild(pGrossini, 0, 1);
		pGrossini->setPosition(ccp(s.width/2, s.height/2));

		//精灵执行动作
		pGrossini->runAction(CCScaleBy::create(2, 2));

		CCDirector* pDirector = CCDirector::sharedDirector();
		pDirector->getActionManager()->pauseTarget(pGrossini);
		pGrossini->runAction(CCRotateBy::create(2, 360));

		this->schedule(schedule_selector(HelloWorld::resumeGrossini), 3.0f);

        bRet = true;
    } while (0);

    return bRet;
}

<3> 最后在HelloWorldScene.cpp文件中添加如下所示函数。

void HelloWorld::resumeGrossini(float time)
{
    this->unschedule(schedule_selector(HelloWorld::resumeGrossini));

    CCNode* pGrossini = getChildByTag(1);
    CCDirector* pDirector = CCDirector::sharedDirector();
    pDirector->getActionManager()->resumeTarget(pGrossini);
}

首先获得导演实例,然后通过调用getActionManager获得动作管理,再通过pauseTarget和resumeTarget等函数

实现暂停/重启目标的动作。

2、示例效果图。

源码下载地址

分享到:
评论

相关推荐

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台发布、程序代码管理、...

    Cocos2d-x学习笔记

    - 学习渲染流程:Cocos2d-x使用OpenGL作为渲染接口,初学者需要学习OpenGL基础以及Cocos2d-x中的渲染流程和优化技巧。 - 掌握事件处理:游戏中的事件处理是交互的核心,需要学习如何响应用户输入和处理游戏中各种...

    Cocos2D-X开发学习笔记-动作类之基础动作的使用示例(下)

    本文主要围绕Cocos2D-X中的基础动作类的使用进行深入探讨。 一、基础动作介绍 基础动作是Cocos2D-X中最基本的动作类型,包括但不限于位移(Move)、旋转(Rotate)、缩放(Scale)、淡入淡出(Fade)和颜色变化...

    Cocos2D-X开发学习笔记-动作管理类的使用示例

    在"Cocos2D-X开发学习笔记-动作管理类的使用示例"中,我们将深入探讨如何有效地利用动作管理类来实现复杂的动画效果。首先,我们需要了解Cocos2d::ActionManager类,它是Cocos2D-X中的核心组件之一,负责存储和执行...

    Cocos2d-x 3.x游戏开发实战pdf含目录

    《Cocos2d-x 3.x游戏开发实战》是一本深度探讨Cocos2d-x 3.x框架的游戏开发书籍,适合对游戏编程有兴趣的开发者学习。Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的...

    Cocos2D-X开发学习笔记-游戏数据存储项目实例(上)

    在“Cocos2D-X开发学习笔记-游戏数据存储项目实例”中,你可能会学习到如何结合上述技术,创建一个实际的游戏数据存储系统。通过阅读教程和分析提供的项目文件"MyDataSave01",你将深入理解如何在实践中应用这些知识...

    Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整

    3. Cocos2d-JS开发:这里强调的是使用Cocos2d-x框架结合JavaScript语言进行开发的过程。由于Cocos2d-x支持多种编程语言(包括C++、JavaScript和Lua),Cocos2d-JS意味着开发者可以采用JavaScript来构建游戏项目。 4...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    《Cocos2d-x实战 JS卷 Cocos2d-JS开发》是一本深入探讨Cocos2d-x游戏引擎JavaScript版本使用的专业书籍。Cocos2d-x是全球范围内广泛采用的游戏开发框架,尤其适用于2D游戏的制作,而Cocos2d-JS则是其JavaScript接口...

    Cocos2d-x实战:C++卷(2版)源代码

    1. **场景(Scene)与层(Layer)管理**:Cocos2d-x使用场景和层的概念组织游戏画面。场景是一个完整的屏幕视图,而层则是场景中的一个可独立管理的部分,多个层可以组合成一个场景。 2. **精灵(Sprite)与动画**...

    cocos2d-x学习笔记

    《cocos2d-x学习笔记》 在学习cocos2d-x时,了解其核心组件和工作流程至关重要。AppDelegate是cocos2d-x框架中的一个关键类,它扮演着应用程序入口点的角色,处理应用程序的生命周期事件。让我们深入探讨...

    Cocos2D-X开发学习笔记-触屏事件使用示例

    本学习笔记将深入探讨如何在Cocos2D-X中处理触屏事件,让游戏能够响应用户的触摸操作。 首先,我们要了解Cocos2D-X中的触摸事件处理机制。在Cocos2D-X中,触屏事件主要通过`Touch`类和`TouchEvent`类来实现。`Touch...

    Cocos2d-x实战 JS卷

    《Cocos2d-x实战 JS卷》是一本深入探讨Cocos2d-x游戏开发的专著,主要聚焦于使用JavaScript语言进行游戏编程。Cocos2d-x是一个开源的游戏开发框架,广泛应用于移动设备和桌面平台,支持iOS、Android、Windows等多...

    Cocos2D-X开发学习笔记-按键事件使用示例

    首先,Cocos2D-X使用了事件系统来处理各种用户输入,包括键盘事件。在Cocos2D-X中,你可以通过监听`EventKeyboard`来捕获键盘上的按键按下和释放动作。要开始监听键盘事件,你需要创建一个`EventListenerKeyboard`...

    cocos2d-x-3.1.zip

    Cocos2d-x是一个开源的游戏开发框架,广泛用于2D游戏、实时渲染应用程序和其他互动内容的制作。这个压缩包“cocos2d-x-3.1.zip”包含了Cocos2d-x框架的3.1版本,这是一个经典且相对旧的版本,可能对于那些寻找历史...

    Cocos2D-X游戏开发技术精解

     《Cocos2D-X游戏开发技术精解》详细介绍如何使用Cocos2D-X引擎开发自己的移动平台游戏。全书共15章,主要内容包括:Cocos2D-X引擎简介;如 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    2. **C++核心**:3.8版本的cocos2d-x使用C++作为主要开发语言,保证了性能和灵活性,同时也通过tolua++和jsb提供Lua和JavaScript接口。 3. **强大的渲染引擎**:支持精灵、批处理、骨骼动画、物理引擎等多种图形...

    cocos2d-x 3.0

    cocos2d-x 3.0中的cc::Animate类可以轻松管理这些帧,通过`createWithFrames`方法创建动画,并使用`runAction`将动画添加到精灵上。 3. 物理引擎:如果游戏需要更真实的物理效果,比如重力、碰撞检测,可以集成Box...

    cocos2d-x windows vs2010配置

    "cocos2d-x windows vs2010 配置详解" 本文将详细介绍如何在 Windows 环境下使用 Visual Studio 2010 配置 Cocos2d-x 游戏引擎。Cocos2d-x 是一个跨平台的游戏引擎,可以在多种平台上运行,包括 Windows、Mac OS X...

    Cocos2d-x实战C++卷关东升著完整版pdf

    《Cocos2d-x实战C++卷》是关东升所著的一本深入探讨Cocos2d-x游戏引擎开发的专业书籍。Cocos2d-x是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言为主要编程...

    Cocos2D-X开发学习笔记-音乐和音效的使用示例

    在Cocos2D-X中,音乐和音效的管理主要通过`cocos2d::AudioEngine`类来完成。这个类提供了一系列的方法用于播放、暂停、停止以及控制音量等操作。 1. **音乐播放**: - `playBackgroundMusic()`:用于播放背景音乐...

Global site tag (gtag.js) - Google Analytics