Cocos2dx:如何停止CCFollow移动视差节点并使背景变黑

Cocos2dx : How to stop CCFollow moving the ParallaxNode and making background black

本文关键字:背景 节点 视差 何停止 CCFollow 移动 Cocos2dx      更新时间:2023-10-16

我正试图使用CCFollow跟踪我的heroSprite,但有两种不稳定的行为正在发生。

我正在使相机跟随我的精灵如下:

startSprite=CSPrite::createWithSpriteFrameName("santa_001.png"(;startSprite->设置位置(ccp(size.width/5,size.height/2((;this->addChild(startSprite,1(;this->runAction(CCFollow::create(heroSprite,CCRectMake(0,0,size.width,size.height*2((

现在,发生的是:

a(当英雄精灵向上跳跃时,由不同精灵组成并以不同速度移动的背景视差节点也在"向上"方向移动。我想让这个精灵保持在原来的位置,而不是随着英雄精灵向上移动。我该怎么做

voidNode=CParallaxNodeExtras:node((;

voidNode->addChild(pSpriteGrass,2,ccp(3.0f,0(,ccp,size.height/10-50(
voidNode->addChild(pSpriteGrass02,ccp(3.0f,0(,ccp(尺寸.宽度-10,尺寸.重量/10-50((;voidNode->addChild(pSprite,1,ccp(1.0f,0(,ccp(0,size.height/10-50((;voidNode->addChild(pSprite02,0,ccp(1.0f,0(,ccp-10,尺寸.重量/10-50(;

voidNode->addChild(pSpriteSky02,0,ccp(0.6f,0(,ccp(0,size.height/2+75(;voidNode->addChild(pSpriteSky,1,ccp(0.6f,0(,ccp(size.width,size.height/2+75((;

voidNode->addChild(pSpriteStars,2,ccp(2.0f,0(,ccp(0,size.height-110((;voidNode->addChild(pSpriteStars02,3,ccp(2.0f,0(,ccp(大小.宽度-10,大小.宽度-110((;

voidNode->addChild(pSpriteClouds,4,ccp(1.2f,0(,ccp(0,size.height-110((;voidNode->addChild(pSpriteClouds02,5,ccp(1.2f,0(,ccp(size.width-10,size.height-110((;

CCActionInterval*go=CCMoveBy::create(25,ccp(-1000,0((;CCSequence*seq=CSequence::create(go,NULL(;voidNode->runAction((CCRepeatForever::create(seq((;

this->addChild( voidNode, 0 );

b(当英雄向上移动时,当英雄精灵跳跃时,用白色初始化的屏幕会在一段时间内变黑。当它落下时,屏幕又变白了。如何使屏幕的向上部分也变白

CC_BREAK_IF(!CCLayerColor::initWithColor(ccc4(255255255255(((;

任何建议或建议都会有所帮助。感谢


B部分更新:

通过"Smugbit Studios"的建议,我更改了

initWithColor:ccc4(255255255255(

initWithColor(ccc4(255255255(,size.width,size.height*2(

它解决了我的问题。我仍在寻找答案a部分

对于a,将CCFollow的边界设置为您想要的最大高度-在这种情况下,我相信它只是size.height,所以:

this->runAction(CCFollow::create(heroSprite, CCRectMake(0, 0, size.width, size.height)));

对于b,我怀疑"this"的主init是CCLayer,而不是CCLayerColor。只需将子类化为CCLayerColor,并将新的init更改为:

initWithColor:ccc4(255,255,255,255)

编辑:更正答案B-您还需要定义图层大小。如果未定义,则将其设置为屏幕大小,但看起来您正试图超出屏幕的高度。在这种情况下,使用:

initWithColor(ccc4(255, 255, 255, 255), width, height)

其中,height是您将显示的最大高度-可能(size.height*2(。