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 }
  • 相关阅读:
    BFS visit tree
    Kth Largest Element in an Array 解答
    Merge k Sorted Lists 解答
    Median of Two Sorted Arrays 解答
    Maximal Square 解答
    Best Time to Buy and Sell Stock III 解答
    Best Time to Buy and Sell Stock II 解答
    Best Time to Buy and Sell Stock 解答
    Triangle 解答
    Unique Binary Search Trees II 解答
  • 原文地址:https://www.cnblogs.com/luorende/p/5988934.html
Copyright © 2011-2022 走看看