转载请注明出处!!
在网上查找了滚动地图的sample,很遗憾大家全是互相抄袭。今天本座用另一种方法实现共享给大家。此代码不能直接使用,有版权信息保护。
voidScrollLayer::initActionMoveBg()
{
pos = ccp(0,1704);//根据图片大小计算
sp1 = CCSprite::create("wwwxx.png");
sp1->setPosition(ccp(0,1136/2));
sp1->setTag(1);
this->addChild(sp1,0);
CCFiniteTimeAction *action = CCMoveTo::create(10.0f,ccp(0, -568));
CCFiniteTimeAction *action2 =CCCallFuncND::create(this,callfuncND_selector(ScrollLayer::actionCallBack), NULL);
repf = CCRepeatForever::create(CCSequence::create(action,action2,NULL));
sp1->runAction(repf);
CCDirector::sharedDirector()->setProjection(kCCDirectorProjection2D);
sp1->getTexture()->setAliasTexParameters();
sp2 = CCSprite::create("wwwxx.png");
sp2->setPosition(pos);
sp2->setTag(2);
this->addChild(sp2,2);
sp2->setVisible(true);
CCFiniteTimeAction *action3 = CCMoveTo::create(10.0f,ccp(0, -568));
CCFiniteTimeAction *action4 =CCCallFuncND::create(this,callfuncND_selector(ScrollLayer::actionCallBack),NULL);
CCRepeatForever*repf3=CCRepeatForever::create(CCSequence::create(action3,action4,NULL));
sp2->runAction(repf3);
sp2->getTexture()->setAliasTexParameters();
}
voidScrollLayer::actionCallBack(CCNode* node,int *i)
{
CCFiniteTimeAction *action3 = CCMoveTo::create(10.0f,ccp(0, -568));
CCFiniteTimeAction *action4 =CCCallFuncND::create(this,callfuncND_selector(ScrollLayer::actionCallBack),NULL);
CCRepeatForever*repf3=CCRepeatForever::create(CCSequence::create(action3,action4,NULL));
switch (node->getTag()) {
case 1:
sp1->stopAllActions();
sp1->setPosition(pos);
sp1->runAction(repf3);
break;
case 2:
sp2->stopAllActions();
sp2->setPosition(pos);
sp2->runAction(repf3);
break;
default:
break;
}
}