您的位置:首页 > 编程语言

代码实现屏幕滚动!

2016-09-06 18:38 246 查看
首先在场景类里获取到两个连续滚动起来无痕迹的图片,放在resource文件夹下,然后代码获取到文件:
<span style="font-size:18px;">
Size visibleSize = Director::getInstance()->getVisibleSize();    //设置主场景的规格大小
Vec2 origin = Director::getInstance()->getVisibleOrigin();      //设置主场景的坐标点

auto background = Sprite::create("bg.jpg",Rect(0,0,768,1024));     //获取背景1的资源
auto background1 = Sprite::create("bg.jpg", Rect(0, 0, 768, 1024));     //获取背景2 的资源
this->addChild(background,0,5);
this->addChild(background1, 0, 6);      //将两个资源文件添加显示到场景

background->setAnchorPoint(Vec2(0.5, 0.5));        //设置背景1的锚点坐标
background->setPosition(Vec2(visibleSize.width / 2, visibleSize.height/2));      //将背景1坐标设置为场景的中心点
background1->setAnchorPoint(Vec2(0.5, 0.5));
background1->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2 + visibleSize.height));//将背景2的坐标设在背景1的上面,就是高1个场景高度
this->schedule(CC_SCHEDULE_SELECTOR(GameScene::autoremove), 0.1f);</span>

后面获取到这些资源之后,就是最主要的步骤:实现图片下移!!

<span style="font-size:18px;"><span style="white-space:pre"> </span>auto b = this->getChildByTag(5);
auto b1 = this->getChildByTag(6); //通过tag值获取资源添加到场景
Size visibleSize = Director::getInstance()->getVisibleSize();
b->setPositionY(b->getPositionY() - 10);
b1->setPositionY(b1->getPositionY() - 10); //图片资源下移10个像素
if (b->getPositionY() + b->getContentSize().height / 2 <= 0){ //判断是否溢出场景
b->setPosition(Vec2(visibleSize.width / 2, visibleSize.height + b->getContentSize().height / 2)); // 复位
}
if (b1->getPositionY() + b1->getContentSize().height / 2 <= 0){
b1->setPosition(Vec2(visibleSize.width / 2, visibleSize.height + b1->getContentSize().height / 2));
}</span>

总的来说最重要的就是算法部分,要理解他其中的逻辑,或者你定义不同的锚点的时候算法或许不同,但是核心还是一样,就是要多理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐