我正在尝试使用CCFollow跟踪我的heroSprite,但是正在发生两种不稳定的行为。
我正在使相机跟随我的精灵,如下所示:
startSprite = CCSprite :: createWithSpriteFrameName(“ santa_001.png”);
startSprite-> setPosition(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)当heroSprite向上跳跃时,由不同精灵组成并以不同速度移动的背景视差节点也在“向上”方向移动。我想将此精灵保持在其原始位置,而不是使用heroSprite向上移动。我怎么做 ?
voidNode = CCParallaxNodeExtras :: node();
voidNode-> addChild(pSpriteGrass,2,ccp(3.0f,0),ccp(0,
size.height / 10-50));
voidNode-> addChild(pSpriteGrass02,3,
ccp(3.0f,0),ccp(size.width-10,size.height / 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(size.width-
10,size.height / 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(size.width-10,size.height-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 = CCSequence :: create(go,NULL);
voidNode-> runAction((CCRepeatForever :: create(seq)));
this->addChild( voidNode, 0 );
b)当英雄向上移动时,在heroSprite跳跃时,用白色初始化的屏幕会变黑一段时间。当它下来时,屏幕再次变白。如何将屏幕的上部也变白?
CC_BREAK_IF(!CCLayerColor :: initWithColor(ccc4(255,255,255,255)));
任何建议或指示都会有所帮助。谢谢
B部分的更新:
通过“ Smugbit Studios”的建议,我改变了
initWithColor:ccc4(255,255,255,255);
至
initWithColor(ccc4(255,255,255,255),size.width,size.height * 2);
它解决了我的问题。我仍在寻找解决问题的答案。
最佳答案
对于a,将CCFollow的边界设置为您想要的最大高度-在这种情况下,我相信它将只是size.height,因此:
this->runAction(CCFollow::create(heroSprite, CCRectMake(0, 0, size.width, size.height)));
对于b,我怀疑您对“ this”的主要初始化是CCLayer,而不是CCLayerColor。只需将您的子类更改为CCLayerColor,然后将新的init更改为:
initWithColor:ccc4(255,255,255,255)
编辑:对答案B的更正-您还需要定义层大小。如果未定义,则将其设置为屏幕尺寸,但是您似乎试图超出屏幕的高度。在这种情况下,请使用:
initWithColor(ccc4(255, 255, 255, 255), width, height)
其中height是您将显示的最大高度-可能是(size.height * 2)。
关于c++ - Cocos2dx:如何停止CCFollow移动ParallaxNode并使背景变黑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16113695/