博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2d-x的action
阅读量:7303 次
发布时间:2019-06-30

本文共 1699 字,大约阅读时间需要 5 分钟。

Action模块非常适合游戏对象的复杂操作

class CC_DLL Action : public Ref, public Clonable

class CC_DLL FiniteTimeAction : public Action

class CC_DLL ActionInterval    : public FiniteTimeAction

class CC_DLL ActionInstant     : public FiniteTimeAction

 添加动作

Action * Node::runAction(Action* action){    CCASSERT( action != nullptr, "Argument must be non-nil");    _actionManager->addAction(action, this, !_running);    return action;}

 

void ActionManager::addAction(Action *action, Node *target, bool paused){        element = (tHashElement*)calloc(sizeof(*element), 1);        element->paused = paused;        target->retain();        element->target = target;        HASH_ADD_PTR(_targets, target, element);     actionAllocWithHashElement(element);     ccArrayAppendObject(element->actions, action);      action->startWithTarget(target); // ??}

循环来源

void Director::drawScene()

void Scheduler::update(float dt)

void ActionManager::update(float dt)

遍历并调用 void Action::step(float dt)

void Action::update(float time) // 归一的时间参数

void Blink::update(float time){    if (_target && ! isDone())    {        float slice = 1.0f / _times;        float m = fmodf(time, slice);        _target->setVisible(m > slice / 2 ? true : false);    }}

很明晰对关系,也很方便添加自定义action

动作运行结束或者主动stop,ActionManager 会自动release对应的action

节点和action之间没有引用关系,都是通过ActionManager联系

 

Action * Node::getActionByTag(int tag){    CCASSERT( tag != Action::INVALID_TAG, "Invalid tag");    return _actionManager->getActionByTag(tag, this);}

 

this->runAction(MoveBy::create(4, ccp(100,0)));    this->runAction(MoveBy::create(4, ccp(0,100)));

如果打开了CC_ENABLE_STACKABLE_ACTIONS宏(默认打开(3.0))

部分动作可以直接并行执行,例如MoveBy可以实现类似 物理学 合力的表现

 

转载于:https://www.cnblogs.com/d20062303732/p/4330801.html

你可能感兴趣的文章
欧特克发布面向中国市场的免费在线CAD软件—AutoCAD易
查看>>
AutoCAD Map 3D 2013新功能视频中文版
查看>>
使用AsyncTask异步更新UI界面及原理分析
查看>>
控制台应用程序 接收UI消息 CODE: C
查看>>
什么是云计算:
查看>>
GNU make manual 翻译(五十五)
查看>>
Resharper团队协作之TODO
查看>>
[Android Studio] Android Studio如何提示函数用法
查看>>
ARMCC和GCC编译ARM代码的软浮点和硬浮点问题【转】
查看>>
Linux设备模型(3)_Uevent【转】
查看>>
轻巧快速的JSON工具--fastJSON
查看>>
Oracle 创建 split 和 splitstr 函数
查看>>
黑吃黑第一季/全集Banshee迅雷下载
查看>>
MySQL数据库重命名的方法
查看>>
Angular 4 表单校验2
查看>>
Step Detector and Step Counter Sensors on Android
查看>>
iOS可持续化集成: Jenkins + bundler + cocoapods + shenzhen + fastlane + pgyer
查看>>
JS魔法堂:再识instanceof
查看>>
PostgreSQL参数学习:max_wal_senders
查看>>
大数n的阶乘
查看>>