展会信息港展会大全

Cocos2d-x 网络线程与UI线程的同步 继承Node但是不执行Update,cocos2d-xnode
来源:互联网   发布日期:2015-09-28 15:29:43   浏览:1787次  

导读: Cocos2d-x 网络线程与UI线程的同步 继承Node但是不执行Update,cocos2d-xnode 在最近的项目中,开始用到网络。 网络通信的话就要有一个循环来接收数据,于是想到直...

Cocos2d-x网络线程与UI线程的同步 继承Node但是不执行Update,cocos2d-xnode

在最近的项目中,开始用到网络。

网络通信的话就要有一个循环来接收数据,于是想到直接到Cocos2d-x的主循环中去修改。

Cocos2d-x的主循环在CCDirector的MainLoop函数中,在这里我们可以添加一个NetworkClient::Update()来执行网络通信的循环。

但是这样就会修改Cocos2d-x的引擎代码。

想到Unity中的做法,把NetworkClient继承自Node,这样就能继承Node的Update了。

但是加上之后,在AppDelegate中New NetworkClient并没有执行Update。

原因如下,虽然添加了scheduleUpdate(); 但是当前Node并没有进入。平时使用都是直接被add到父节点。现在单独把Node作为一个节点,就需要在New之后执行以下代码:

在初始化函数中添加:

this->onEnter();

this->onEnterTransitionDidFinish();

scheduleUpdate();

终于成功。

附代码:

#include "AppController.h"

#include "LogoScene.h"

AppController::AppController()

{

}

bool AppController::init()

{

if (Node::init())

{

this->onEnter();

this->onEnterTransitionDidFinish();

scheduleUpdate();

// create a scene. it's an autorelease object

//auto scene = HelloWorld::scene();

auto scene=LogoScene::create();

// run

Director::getInstance()->runWithScene(scene);

return true;

}

return false;

}

void AppController::update(float dt)

{

//开始EventManager消息机制;

int a=0;

//开始网络通讯;

}

AppController::~AppController()

{

}

http://www.bkjia.com/Androidjc/908265.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/908265.htmlTechArticleCocos2d-x 网络线程与UI线程的同步 继承Node但是不执行Update,cocos2d-xnode 在最近的项目中,开始用到网络。 网络通信的话就要有一个循环来接...

赞助本站

人工智能实验室

相关热词: android开发 应用开发

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港