视差滚屏效果的实现:
我们在做IOS游戏开发的时候,经常会遇到那种屏幕动的效果,比如跑酷类的游戏,就这这种效果的典型应用。
效果图:
核心代码:
bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } CCSize screenSize = CCDirector::sharedDirector()->getWinSize(); CCSprite *para1 = CCSprite::create("parallax1.png"); CCSprite *para2 = CCSprite::create("parallax2.png"); CCSprite *para3 = CCSprite::create("parallax3.png"); CCSprite *para4 = CCSprite::create("parallax4.png"); para1->setAnchorPoint(CCPointMake(0, 1)); para2->setAnchorPoint(CCPointMake(0, 1)); para3->setAnchorPoint(CCPointMake(0, 0.6f)); para4->setAnchorPoint(CCPointMake(0, 0)); CCPoint topOffset = CCPointMake(0, screenSize.height); CCPoint midOffset = CCPointMake(0, screenSize.height/2); CCPoint downOffset = CCPointMake(0, 0); CCParallaxNode* paraNode = CCParallaxNode::create(); paraNode->addChild(para1, 1, CCPointMake(0, 10), topOffset); paraNode->addChild(para2, 2, CCPointMake(0, 10), topOffset); paraNode->addChild(para3, 3, CCPointMake(0, 10), midOffset); paraNode->addChild(para4, 4, CCPointMake(0, 10), downOffset); this->addChild(paraNode,2,1); CCMoveBy*move1 = CCMoveBy::create(3, CCPointMake(0, -160)); CCMoveBy*move2 = CCMoveBy::create(3, CCPointMake(0, 160)); CCSequence*sequence = CCSequence::create(move1,move2,NULL); CCRepeatForever *repeat = CCRepeatForever::create(sequence); paraNode->runAction(repeat); return true; }