cocos2d-x无限滚动背景
2013-11-03 00:11
295 查看
在一些跑酷类,打飞机类的手游,背景需要无限的滚动,我也来实现一下无限跑动。原理比较简单,就是画一张头尾可以相接图片,用两个精灵加载这个图片,两个精灵的位置是相接的,然后两个精灵轮流显示,如果有一个精灵完全离开屏幕,则将精灵设置为连接在另一个精灵后的位置。我们来看看代码:
我们还需要在update函数中,不断检查精灵的位置,并设置正确的位置
就是这样不断的切换两张图的相对位置,就可以实现无限滚动了,简单吧
bool CTest::init() { CCAssert(CCLayer::init(), ""); // 设置背景 m_pBackGround1 = CCSprite::create(STR_BACKGROUND); // STR_BACKGROUND是图片的路径 m_pBackGround2 = CCSprite::create(STR_BACKGROUND); // 加载背景 CCAssert(m_pBackGround1 && m_pBackGround2, ""); CCSize size = CCDirector::sharedDirector()->getWinSize(); CCRect rcBounding = m_pBackGround1->boundingBox(); m_pBackGround1->setPosition(ccp(rcBounding.size.width / 2, size.height / 2)); // 设置在屏幕中间 m_pBackGround2->setPosition(ccp(rcBounding.size.width * 3 / 2, size.height / 2));// 设置精灵2连接在精灵1的后面 this->addChild(m_pBackGround1, CHILD_ORDER_BACKGROUND); // CHILD_ORDER_BACKGROUND精灵的层级,这里是 = 1 this->addChild(m_pBackGround2, CHILD_ORDER_BACKGROUND); scheduleUpdate(); return true; }
我们还需要在update函数中,不断检查精灵的位置,并设置正确的位置
void CTest::update(float delta) { // 背景无限滚动 CCAssert(m_pBackGround1 && m_pBackGround2, ""); m_pBackGround1->setPositionX(m_pBackGround1->getPositionX() - 1); // 每次update都向左移动1点 m_pBackGround2->setPositionX(m_pBackGround2->getPositionX() - 1); CCRect rcBounding1 = m_pBackGround1->boundingBox(); CCRect rcBounding2 = m_pBackGround2->boundingBox(); if (rcBounding1.getMaxX() <= 0) // 如果完全消失在屏幕上,就移动精灵1到精灵2的后面 { m_pBackGround1->setPositionX(rcBounding1.size.width * 3 / 2); } if (rcBounding2.getMaxX() <= 0) // 如果完全消失在屏幕上,就移动精灵2到精灵1的后面 { m_pBackGround2->setPositionX(rcBounding2.size.width * 3 / 2); } }
就是这样不断的切换两张图的相对位置,就可以实现无限滚动了,简单吧
相关文章推荐
- cocos2d-x3.0从XML读取中文
- Cocos2d-x动画与精灵(新手)
- 在cocos2d-x下实现查询软件功能
- cocos2dx添加文本的三种方法及适用情况CCLabelTTF,CCLabelBMFont,CCLabelAtlas
- Cocos2d-x基础: CCProgressTimer的使用
- 试用 cocoStudio
- cocos2d-x v2.2 移植WP8详解
- cocos2d-x基础
- windows7 下 cocos2d-x-2.2 Android开发环境设置
- cocos2d-x android的配置
- cocos2d-x之ActionRepeatForever
- cocos2d-x 函数
- cocos2d-x 动作动画方法
- cocos2d-x入门(7)-win7下把win32游戏移植到Android平台(无需cygwin和minigw)
- cocos2d-x帧动画 -- 角色跑动
- cocos2d-x 学习资料汇总
- cocos2dx一个场景添加多个层
- Cocos2d-x 进度加载
- cocos2dx如何用python新建项目
- cocos2dx创建精灵的五种方法(包括使用图片名获取图片)