效果如图
代码如下(头文件):
#ifndef scene_h
#define scene_h
#include "cocos2d.h"
using namespace cocos2d;
#include "ui/CocosGUI.h"
using namespace ui;
class scene:public Scene
{
public:
static Scene * CreateScene();
virtual bool init();
CREATE_FUNC(scene);
void CallBack();
private:
float _min; //用做改变方向的条件
float _size; //移动量
Sprite * temp; //精灵
bool _direction;//转动方向
};
#endif /* scene_h */
cpp文件:
#include "scene.h"
#include <iostream>
using namespace std;
Scene * scene::CreateScene()
{
return scene::create();
}
bool scene::init()
{
if(!Scene::init())
{
return false;
}
//获取屏幕大小
auto size = Director::getInstance()->getVisibleSize();
//创建精灵
temp = Sprite::create("112.png");
//写入场景
this->addChild(temp);
//设置锚点
temp->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
//s设置坐标在屏幕中间
temp->setPosition(size/2);
//设置比例
temp->setScale(1.0f);
//初始化为精灵的比例
_size = temp->getScaleX();
//初始化转向的条件为反向
_min = - temp->getScaleX();
//默认向负
_direction = false;
this->schedule([&](float dlt)
{
if(_direction == false) //默认向负
{
_size -= 0.01f; //移动量
if(_size <= _min) //如果到了条件值转向
{
_direction = true;//转向
_min = -_min; //条件更新
}
}
else //向正
{
_size += 0.01f; //移动
if(_size >= _min) //到了条件转向
{
_direction = false;//转向
_min = -_min; //条件更新
}
}
temp->setScaleX((float)_size);
}, 0.02f,"schedule");
return true;
}