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中的updat
e和触摸都失效,后台忘
记调用
了基
类
的onEnter(
)
方
法
,通过
源码发过
,
CCNode和CCLayer中的onEnter做了一些初始化工作。
如果
下
次
也
碰
到
类似问题,希望能帮上忙!
经测试,的确是如此的。继承了onEnter以后,按键是无法使用的。