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 在最近的项目中,开始用到网络。 网络通信的话就要有一个循环来接...