我正在尝试使用 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) 当 hero 向上移动时,初始化为白色的屏幕会在 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 。