zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    项目中 2个或者多个EF模型 表名称相同会导致生成的实体类 覆盖的解决方法
    Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法;关于如何查看 EntityValidationErrors 详细信息的解决方法
    深夜杳杳
    我在学习
    IIS下新建虚拟目录
    Win10资源管理器异常
    Docker笔记三:Docker数据卷和DockerFile
    Docker笔记二:Docker拷贝,提交,进入容器和阿里云加速
    ElasticSearch7.x系列三:Logstash的使用
    ElasticSearch7.x系列二:Kibana的使用和C#的Nest客户端
  • 原文地址:https://www.cnblogs.com/luorende/p/5988934.html
Copyright © 2011-2022 走看看