Cocos2d-x 第一天

本文详细介绍了Cocos2d-x游戏开发引擎的核心架构,包括导演(CCDirector)、场景(CCScene)、布景(CCLayer)、精灵(CCSprite)及动作(CCAction)五大核心组件,并解释了它们之间的层次关系及如何实现场景切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cocos2d-x 是以Cocos2d-iphone 移植版本,是以我们中国为主导的。
首先先来说明Cocos2d-x的五个主导类。
Cocos2d-x 是以类似拍摄电影的劳动角色来分类的。包含有导演,场景,布景,精灵(演员),动作
CCDirector:  导演,负责场景的切换以及场景的信息。如宽度,高度,旋转场景内容。
CCScene:     场景. 场景包含有布景,精灵,每场戏的不同,要切换场景。游戏中可分为主界面, 游戏, 分数榜,结束界面等。
CCLayer:     布景. 类似是层的概念,也可来源于PS的层的概念。每一层都带有众多精灵等
CCSprite:    精灵。就是演员的,演员就需要加入到层里面去的。有相应的动作。
CCAction:    动作。精灵的动作。

CCDirector 包含 多个 CCScene

CCScene 包含多个 CCLayer

CCLayer 包含多个 CCSprite

CCSprite 包含多个 CCAction

场景切换:
void CMyScene::Show()
{
CCScene* myScene = CCScene::node();
CMyScene* layer = CMyScene::node();
myScene->addChild(layer);
CCScene* preScene = CCDirector::ShareDirector()->getRunningScene();
if (preScene == null)
{
CCDirecotr::ShareDirector()->runWithScene(myScene);
}
else
{
CCDirecotr::ShareDirector()->replaceScene(myScene);
}
}

CCNode OnEnter()调用:
Class MyLayer:public CCLayer
{
};
1. MyLayer* layer = new MyLayer();
此时,会进行会onEnter回调。

2. CCLayer* layer = MyLayer::node();
此时,不会进行onEnter回调。

两者的区别,这个我也不是特别清楚,有清楚的读者可以补充, 好像是第二种方式会进行自动释放内存。
但是,第一种的话,也是可以autorelease();区别除了调用onEnter(),有待继续研究。


LAYER_NODE_FUNC 定义使用

在初始化类时,则会进行调用生成一个结点,可以查看源码,会进行一次init()的操作。
但是需要的是 类::node();使用才行。
init()与onEnter区别:
init()是类加载时,则可以加载某些资源。
onEnter():则为显示时,可以更新某些数据。


CCNode、CCLayer中的OnEnter()方法
自己定义的CCLayer中重写了onEnter()方法以后, Layer中的update和触摸都失效,后台忘记调用了基的onEnter(),通过源码发过, CCNode和CCLayer中的onEnter做了一些初始化工作。如果类似问题,希望能帮上忙!

经测试,的确是如此的。继承了onEnter以后,按键是无法使用的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值