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

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

网络通信的话就要有一个循环来接收数据,于是想到直接到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()
{

}

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...