init方法和onEnter方法的区别

cocos2dx场景切换中init、onEnter、onEnterTransitionDidFinish的调用顺序 - 好工具站长分享平台
cocos2dx场景切换中init、onEnter、onEnterTransitionDidFinish的调用顺序
这些方法调用的先后顺序如下(使用&replaceScene 方法):
1. 第2个场景的 scene 方法
2. 第2个场景的 init 方法
3. 第2个场景的 onEnter 方法
5. 第1个场景的 onExit 方法
6. 第2个场景的 onEnterTransitionDidFinish 方法
7. 第1个场景的 dealloc 方法
.Net 文章一周点击
.Net 文章一月点击
HaoGongJu.Net ( 好工具 ) All Rights Reserved//设置默认的按钮属性
CCMenuItemFont::setFontSize( 30 );
CCMenuItemFont::setFontName(&Courier New&);
setIsTouchEnabled(true);
// 利用sprite建立三个按钮的选择状态:普通、选中、禁止,这里的第二个参数是切割的一个图片文件。(三个按钮被放在了同一个图片中)...
五、纹理Texture
如果没有贴图的话,所有粒子将会是单调的色块。粒子的贴图没有具体限制,可以是灰度图,也可以是一张具体的图片。但要小于64x64pixel
六、cocos2d-x实现Particle System
第一种方法:
CCParticleSystem*
 m_emitter=
CCParticleFirewor...
四、发射器相关属性
发射器有两种,一种是重力发射器(用于实现在重力条件下的粒子运动),另一种是放射发射器(用于实现在无重力下的粒子运动)。...
Velocity(速度)每个粒子都有一个随机产生的初始速度,粒子的新速度由加速度和空气阻尼来求得
Acceleration(加速度)在烟火中,每个粒子的加速度都等于重力加速度
Color(颜色)粒子颜色取决于粒子的速度或生命值的大小
Life(生命值)每个粒子都有一个初始的随机生命值,这个值将随着时间的推移而逐渐减小,直到等于0
你会发现,Particle Sys...
1 关于CCScene的类层次:
    CCScene的基类为CCNode,这是一个抽象的概念.CCScene与CCNode的唯一不同是CCScene的锚点在屏幕的中心。目前CCScene还没有其他的逻辑。CCScene拥有子类CCTransitionScene,用于变化场景。
2 关于CCLayer的类层次
    CCLayer是CCNode的子类 ,实现了Tou...
1.基本动作
     Cocos2d提供的基本动作:瞬时动作、延时动作、运作速度。
     瞬时动作:就是不需要时间,马上就完成的动作。瞬时动作的共同基类是 InstantAction。
     Cocos2d提供以下瞬时动作:
放置 – Place
    flight-&runAction(CCPlace::actionWithPosition(p));
隐藏 –...
程序截图:
  当你在使用cocos2d制作一个游戏的时候,你很可能会发现,你需要的第一个东西就是“按钮”。(比如游戏开始时的菜单选择界面等)这个教程将会一步步地教你如何使用cocos2d来创建按钮。刚开始创建简单的按钮,然后再介绍开关按钮和单选按钮。
  当我第一次想要在cocos2d里面添加一个按钮的时候,我是这样想的:创建一个精灵(sprite)来代表按钮,然后检测这个按...
函数调用 cccallfunc
之前曾遇到一个关于传值的问题,刚好今早遇到,把相关的都贴进来,知易教程上的内容
在动作序列中间或者结束调用某个函数,执行任何需要执行的任务:动作、状态修改等。代码如下:
- (void) OnCallFunc:(id) sender {
id ac1 = [CCMoveBy actionWithDuration:2 posit...
内容简要:
1、初始化 2、创建无图的精灵 3、设置精灵贴图大小  4、添加入层中
5、对精灵进行缩放  6、对精灵款或高进行缩放  7、旋转精灵
8、设置精灵透明度  9、精灵的镜像反转  10、设置精灵的颜色
11、得到图的宽高   12、按照像素设定图片大小  13、在原有的基础上加xy的坐标
14、设置图片锚点    15、从新排列z轴顺序   16、更换精灵...
内容简要:
1、初始化 2、创建无图的精灵 3、设置精灵贴图大小  4、添加入层中
5、对精灵进行缩放  6、对精灵款或高进行缩放  7、旋转精灵
8、设置精灵透明度  9、精灵的镜像反转  10、设置精灵的颜色
11、得到图的宽高   12、按照像素设定图片大小  13、在原有的基础上加xy的坐标
14、设置图片锚点    15、从新排列z轴顺序   16、更换精灵...
单点触控:Targeted Touch Delegate方式
一个层接收触摸消息需要如下步骤:
1,在初始化阶段将此层的属性设置为接收触摸消息。例如在init()函数中添加:
setIsTouchEnabled(true);
2,重载函数virtual void registerWithTouchDispatcher(void);
Cocos2D以OpenglES为图形库,所以它使用OpenglES坐标系。GL坐标系原点在屏幕左下角,x轴向右,y轴向上。
屏幕坐标系
苹果的Quarze2D使用的是不同的坐标系统,原点在屏幕左上角,x轴向右,y轴向下。ios的屏幕触摸事件CCTouch传入的位置信息使用的是该坐标系。因此在cocos2d中对触摸事件做出响应前需要首先把触摸点转化到GL坐标...
中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
在 cocos2d 中有三个类可以在层或精灵中添加文字:
CCLabelTTFCCLabelBMFontCCLabelAtlas
CCLabelTTF
CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPE...
1 所有的new出来的变量,都要加autorelease。
2 所有copy的对象也都需要autorelease
3 对于继承了CCLayer或者CCScene的类,我们可以编写构造函数也可以不编写
  当我们的类显示的声明了析构函数,我们可以把对象的release操作放在析构函数里,也可以放在OnExit函数里。。例如:
   我们在类的OnEnter...
一,建立动画帧集合,即导入贴图文件.png和导入贴图文件的配置文件.plist,如下例所示
首先是获得cache,然后是通过addSpriteFrameWithFile加入贴图文件.png和导入贴图文件的配置文件.plist,第一个参数为.plist的路径,第二个参数为.png文件的路径,一个参数的函数的png文件的文件名与.plist文件相同。也就是说第一个ad...
访问:212861次
积分:3540
积分:3540
排名:第3118名
原创:39篇
转载:675篇
评论:16条
(2)(7)(2)(4)(39)(60)(24)(86)(119)(92)(2)(2)(2)(1)(5)(18)(3)(17)(20)(97)(59)(35)(20)(1)1032人阅读
我们在进入layer的时候,首先如果使用默认的方法(LAYER_CREATE_FUNC
)初始化,那么它就会进入init,这个方法你可以初始化你的layer和一些sprites,如果你想自己重写layer的onEnter/onExit的话,那么务必请注意,你要在你的onEnter/onExit里面写上基类的Base::onEnter、Base::onExit,否则的话,程序会收不到消息的。
举例子说明:
void GameController::InitController() {
CCMenuItemImage *menuitem = CCMenuItemImage::create(
&NextLayeNormal.png&,
&NextLayeSelected.png&,
menu_selector(GameController::CreateNextScene));
我初始化我的menu,回调一个:
GameController::CreateNextScene
才响应menu的点击消息。
如果我这个时候在GameController里面没有重写onEnter/onExit,那么我就它自动会接受到menu的点击消息。但是,一旦你重写了onEnter/onExit,就一定要写基类的onEnter/onExit的调用,否则,我在初始化menu的时候不会回调到GameController::CreateNextScene里面。也就是不会接受到消息。
我们看下layer的onEnter/onExit的源码:
void CCLayer::onEnter()
CCDirector* pDirector = CCDirector::sharedDirector();
// register 'parent' nodes first
// since events are propagated in reverse order
if (m_bIsTouchEnabled)
this-&registerWithTouchDispatcher();
// then iterate over all the children
CCNode::onEnter();
// add this layer to concern the Accelerometer Sensor
if (m_bIsAccelerometerEnabled)
pDirector-&getAccelerometer()-&setDelegate(this);
// add this layer to concern the kaypad msg
if (m_bIsKeypadEnabled)
pDirector-&getKeypadDispatcher()-&addDelegate(this);
void CCLayer::onExit()
CCDirector* pDirector = CCDirector::sharedDirector();
if( m_bIsTouchEnabled )
pDirector-&getTouchDispatcher()-&removeDelegate(this);
unregisterScriptTouchHandler();
// remove this layer from the delegates who concern Accelerometer Sensor
if (m_bIsAccelerometerEnabled)
pDirector-&getAccelerometer()-&setDelegate(NULL);
// remove this layer from the delegates who concern the kaypad msg
if (m_bIsKeypadEnabled)
pDirector-&getKeypadDispatcher()-&removeDelegate(this);
CCNode::onExit();
看了源码就知道了,如果不调用的基类的onEnter/onExit那么我无法得到消息代理。也就不能接收到消息
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:236859次
积分:4581
积分:4581
排名:第2032名
原创:225篇
转载:10篇
评论:60条
(6)(23)(2)(2)(7)(5)(4)(6)(24)(32)(30)(30)(6)(1)(7)(13)(4)(7)(8)(2)(1)(9)(6)请问我在init方法中加入this-&setTouchEnabled(true)运行就会报错 | Cocos2d-x讨论区 - CocoaChina 开发讨论区 - Powered by PHPWind
setTouchEnabled(true),然后运行就会在 CCObject.cppvoid CCObject::retain(void){
CCAssert(m_uReference > 0, reference count should greater than 0); //停留在此处
++m_uR}求高手指点 CocoaChina 开发讨论区" />
查看完整版本: [--
请问我在init方法中加入this-&setTouchEnabled(true)运行就会报错
在一个继承CCLyaer init方法中加入this->setTouchEnabled(true),然后运行就会在 CCObject.cpp
void CCObject::retain(void){
CCAssert(m_uReference > 0, "reference count should greater than 0"); //停留在此处
++m_uR}求高手指点
[quote][size=2][color=#999999]少先队员 发表于
18:23[/color] [url=forum.php?mod=redirect&goto=findpost&pid=19877&ptid=10446][img]static/image/common/back.gif[/img][/url][/size]
onEnter()[/quote]谢谢,要的了
[quote][size=2][color=#999999]少先队员 发表于
18:19[/color] [url=forum.php?mod=redirect&goto=findpost&pid=19876&ptid=10446][img]static/image/common/back.gif[/img][/url][/size]
放到 entry()
函数吧, 这个函数用到的对象还没初始化...[/quote]放入onEnter运行没有问题但是按键没有被监听,我就没明白为什么方到init方法中就报错,在HelloWordScene中init方法中放入[size=12px]setTouchEnabled(true) 就可以,然后监听也没问题,为什么自己写的类继承cclayer 就有问题,求解~~[/size]
[quote][size=2][color=#999999]乖乖 发表于
18:15[/color] [url=forum.php?mod=redirect&goto=findpost&pid=19954&ptid=10446][img]static/image/common/back.gif[/img][/url][/size]
放入onEnter运行没有问题但是按键没有被监听,我就没明白为什么方到init方法中就报错,在HelloWordScene ...[/quote]你在自己实现的onEnter里加一行CCLayer::onEnter()就行了,原因,你查看源码就知道了。
[quote][size=2][color=#999999]Adreo 发表于
10:23[/color] [url=forum.php?mod=redirect&goto=findpost&pid=19966&ptid=10446][img]static/image/common/back.gif[/img][/url][/size]
你在自己实现的onEnter里加一行CCLayer:nEnter()就行了,原因,你查看源码就知道了。
...[/quote]放入就报错也是报 放第一个和最后一个也一样报错
void CCObject::retain(void)[align=left]{[/align][align=left]
CCAssert(m_uReference > 0, "reference count should greater than 0"); //停留在此处[/align]
[align=left]
++m_uR[/align][align=left]}[/align]
[quote][size=2][color=#999999]乖乖 发表于
10:35[/color] [url=forum.php?mod=redirect&goto=findpost&pid=19967&ptid=10446][img]static/image/common/back.gif[/img][/url][/size]
放入就报错也是报 放第一个和最后一个也一样报错
void CCObject::retain(void){
CCAssert(m_uReferenc ...[/quote]错在那个地方是你其他地方写错了吧
引用计数为0了,你没有在构造的时候addchild,也没有retain吧, 方便的话,把你的创建对象那部份代码给看一下.
应该是你代码逻辑上的错误,肯定那里多add了!
[quote][size=2][color=#999999]李小狼 发表于
11:34[/color] [url=forum.php?mod=redirect&goto=findpost&pid=20036&ptid=10446][img]static/image/common/back.gif[/img][/url][/size]
这个LAYER没有注册,触摸的方法你也没写对[/quote]请问哪里没对? layer没对? 触摸方法 this->setTouchEnabled(true); 没对?
我也出这个问题了,我的问题在于基础CCLayer时,没有加public,而默认是私有继承,导致不能访问该方法。class HelloWorld:CCLayer改为class HelloWorld:public CCLayer
查看完整版本: [--
Powered by
Time 0.016677 second(s),query:4 Gzip disabledYou can在使用 replaceScene 方法切换场景时:
&第2个场景的 scene()------- -&第2个场景的 init ()---------&第2个场景的 onEnter()-------------------&第1个场景的 onExit ()--------------&第2个场景的 onEnterTransitionDidFinish()
---------------------------------& 第1个场景的 dealloc ()
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:23729次
排名:千里之外
转载:102篇
(23)(10)(1)(9)(1)(6)(1)(9)(2)(14)(6)(12)(13)}

我要回帖

更多关于 servlet的init方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信