我正在尝试使用CCFollow关注我的heroSprite,但是有两种不稳定的行为正在发生。
我按照我的精灵制作相机如下:
startSprite = CCSprite :: createWithSpriteFrameName(“santa_001.png”); startSprite-> setPosition(ccp(size.width / 5,size.height / 2)); 这 - >的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(255255255255);
到
initWithColor(ccc4(255,255,255,255),size.width,size.height * 2);
它解决了我的问题。我仍然希望解决答案部分a。
答案 0 :(得分:1)
对于a,将CCFollow的边界设置为你想要的最大高度 - 在这种情况下,我相信它只是size.height,所以:
this->runAction(CCFollow::create(heroSprite, CCRectMake(0, 0, size.width, size.height)));
对于b,我怀疑你的主“init”是CCLayer,而不是CCLayerColor。只需将您继承的子类更改为CCLayerColor,并将新的init更改为:
initWithColor:ccc4(255,255,255,255)
编辑:答案B的更正 - 您还需要定义图层大小。如果未定义,则将其设置为屏幕大小,但看起来您试图超出屏幕高度。在这种情况下,请使用:
initWithColor(ccc4(255, 255, 255, 255), width, height)
高度是您将显示的最大高度 - 可能(size.height * 2)。