首页 > 代码库 > cocos2dx 3.x(一张背景图实现循环轮播)
cocos2dx 3.x(一张背景图实现循环轮播)
1 // 2 // MainScene.hpp 3 // helloworld 4 // 5 // Created by apple on 16/9/19. 6 // 7 // 8 9 #ifndef MainScene_hpp 10 #define MainScene_hpp 11 12 #include <stdio.h> 13 #include "cocos2d.h" 14 using namespace cocos2d; 15 //定义一个场景类 16 17 class MainScene : public cocos2d::Layer{ 18 private: 19 // 成员变量(私有的) 20 cocos2d::Sprite *sprite;//定义一个精灵成员变量 21 cocos2d::Sprite *sprite2; 22 23 public: 24 virtual bool init(); // 虚函数,返回值为布尔类型,没有函数 25 // static CCScene * scene(); 26 static cocos2d::Scene* createScene();//static是一个类方法返回场景 27 28 void movebd(float times);//注册自定义定时调用方法函数 29 30 CREATE_FUNC(MainScene); 31 }; 32 33 34 #endif /* MainScene_hpp */
1 // 2 // MainScene.cpp 3 // helloworld 4 // 5 // Created by apple on 16/9/19. 6 // 7 // 8 9 #include "MainScene.hpp" 10 Scene * MainScene::createScene() 11 { 12 auto scene = Scene::create(); 13 //创建层 14 MainScene *layer = MainScene::create(); 15 scene->addChild(layer); 16 return scene; 17 } 18 bool MainScene::init(){ 19 if (!Layer::init()) { 20 return false; 21 } 22 23 24 25 //定义初始位置 26 sprite = Sprite::create("Cow100_background.png"); 27 sprite ->setPosition(0, 25); 28 sprite->setAnchorPoint(Vec2(0, 0));//设置精灵的锚点 29 sprite ->setScale(2.4f);//放大精灵尺寸2.4倍 30 // sprite ->setContentSize(Size(200, 100)); 31 this->addChild(sprite);// 添加到层 32 33 34 sprite2 = Sprite::create("Cow100_background.png");//与上面背景精灵一样的,只是坐标点不一样 35 sprite2 ->setPosition(480, 25);//两张图并行紧贴一起,下面调用定时器实现两张图一起循环移动 36 sprite2->setAnchorPoint(Vec2(0, 0)); 37 sprite2 ->setScale(2.4f); 38 // sprite2 ->setContentSize(Size(200, 100)); 39 this->addChild(sprite2);// 添加到层 40 41 42 43 // this->schedule(schedule_selector(MainScene::movebd)); 44 schedule(schedule_selector(MainScene::movebd), 0.05);// 创建自定义定时器0.05秒调用一次 45 46 return true; 47 } 48 49 50 void MainScene::movebd(float times) 51 { 52 53 // 获取到当前精灵的坐标,X轴-1,Y轴不- 54 sprite->setPosition(Point(sprite->getPositionX()-1,sprite->getPositionY())); 55 sprite2->setPosition(Point(sprite2->getPositionX()-1,sprite2->getPositionY())); 56 if(sprite->getPositionX() == -480){//这里是根据自己的屏幕尺寸设定的,判断精灵X轴坐标的移动长度,也就是背景的长度 57 sprite ->setPosition(480, 25);//重置背景图坐标点 58 59 } 60 if(sprite2->getPositionX() == -480){//这是第二张背景图 61 sprite2 ->setPosition(480, 25); 62 } 63 64 65 }
cocos2dx 3.x(一张背景图实现循环轮播)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。