博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Cocos2d-x中地图轮播的实现
阅读量:7220 次
发布时间:2019-06-29

本文共 1569 字,大约阅读时间需要 5 分钟。

 

播放背景,两个背景的图片是一样的,紧挨着循环播放,以下代码写在playBackground()方法中,并在GameScene.cpp的init方法中调用。

 

void GameScene::playBackground()

{

auto winSize = Director::getInstance()->getWinSize();  //获得OpenGL视图的大小,不是可见屏幕的大小,以点为单位

int delta = 10; //补缝用的,两个背景紧挨着移动可能出现缝隙,轮播图的像素高应该比设备屏幕高的大一点(+0.01)(其实可以删去) 2.后面的图应该稍微往前靠一点 这样就不会有缝隙了

 

auto bg1 = Sprite::createWithSpriteFrameName("background.png");

bg1->setScaleX(winSize.width / bg1->getContentSize().width);  //让地图的宽和屏幕一样宽
bg1->setScaleY(winSize.height / bg1->getContentSize().height + 0.01); //让地图的高比屏幕高一点(其实可以设置成一样高,这里+0.01可以删除)
bg1->setAnchorPoint(Vec2(0, 0));
addChild(bg1);

auto move1 = MoveBy::create(30, Vec2(0, -winSize.height));

auto callfunc1 = CallFunc::create([bg1](){  //设置回调函数,在移动完地图后,执行这个方法,回到最初的位置
  bg1->setPosition(Vec2(0, 0));
});
auto action1 = Sequence::create(move1, callfunc1, nullptr);
bg1->runAction(RepeatForever::create(action1));

 

 

 

auto bg2 = Sprite::createWithSpriteFrameName("background.png");

bg2->setScaleX(winSize.width / bg2->getContentSize().width);  //让地图的宽和屏幕一样宽
bg2->setScaleY(winSize.height / bg2->getContentSize().height + 0.01); //让地图的高比屏幕高一点(其实可以设置成一样高,这里+0.01可以删除)
bg2->setAnchorPoint(Vec2(0, 0));
bg2->setPosition(Vec2(0, bg1->getPositionY() + winSize.height - delta));
addChild(bg2);
auto move2 = MoveTo::create(30, Vec2(0, 0));
auto callfunc2 = CallFunc::create([bg2, bg1, winSize, delta](){  //设置回调函数,在移动完地图后,执行这个方法,回到最初的位置
  bg2->setPosition(Vec2(0, bg1->getPositionY() + winSize.height - delta));
});
auto action2 = Sequence::create(move2, callfunc2, nullptr);
bg2->runAction(RepeatForever::create(action2));

}

转载地址:http://pdhym.baihongyu.com/

你可能感兴趣的文章
Java生成验证码
查看>>
深度解析windows调试技术之一 [抓取user mode dump文件的几重境界]
查看>>
Codeforces Round #168 (Div. 2) A. Lights Out(模拟)
查看>>
免费素材: Retina Glyph图标集 (包含100个AI & PNG格式的图标)
查看>>
阳历转阴历算法概述
查看>>
深入浅出事件流处理NEsper(一)
查看>>
ALTER FPGA通过软件设置上拉(转)
查看>>
Chronon 3.5 发布,支持 Java 7
查看>>
关于Windows内存的一些参考文章
查看>>
WCF Concurrency (Single, Multiple, and Reentrant) and Throttling
查看>>
构建高性能的ASP.NET应用(二)-性能优化演绎法
查看>>
CentOS6.2安装Oracle Oracle Net Configuration Assistant failed 错误
查看>>
经济泡沫破灭后,那些人的日子会比较难过?
查看>>
[转载]PostgreSQL学习手册(目录)
查看>>
SIGTERM等信号含义
查看>>
hibernate中的java对象有几种状态,其相互关系如何(区别和相互转换)
查看>>
插入排序实现
查看>>
看张子阳如何在如何在30岁前年薪超过30万觉得很有道理几点
查看>>
HashMap的遍历
查看>>
android:ListView:convertView.setTag()来设置数据
查看>>