效果如下:
以下是頭文件
#include <cocos2d.h>
using namespace cocos2d;
#include "spine/spine.h"
#include "spine/spine-cocos2dx.h"
#include "../cocos2d/cocos/ui/UILoadingBar.h" // 讀取進度條庫
#include "ui/CocosGUI.h"
using namespace ui;
class MyButton : public Scene
{
public:
static Scene* createscene();
CREATE_FUNC(MyButton);
virtual bool init();
void ComeBack(Ref* temp);
private:
LoadingBar* bar; //進度條顯示血量
};
cpp文件
#include "MyButton.h"
#include "SliderScene.h"
Scene* MyButton::createscene()
{
return MyButton::create();
}
bool MyButton::init()
{
if (!Scene::init())
{
return false;
}
auto visible = Director::getInstance()->getVisibleSize();
//創建精靈
auto _sprite = Sprite::create("timg2.png");
this->addChild(_sprite);
_sprite->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
_sprite->setPosition(Director::getInstance()->getVisibleSize()/2);
_sprite->setScale(0.6f);
//創建進度條
bar = LoadingBar::create();
//錨點
bar->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
//將座標設爲中心
bar->setPosition(visible / 2);
this->addChild(bar);
//進度條從左開始
bar->setDirection(LoadingBar::Direction::LEFT);
//加載進度條資源
bar->loadTexture("bar.jpg");
//設置初始化血量也就是百分比
bar->setPercent(100);
//設置顯示比例
bar->setScale(0.2);
//創建對應的button按鈕
auto button = Button::create("attack1.png", "attack2.png", "attack3.png");
this->addChild(button);
//設置按鈕錨點
button->setAnchorPoint(Vec2::ANCHOR_BOTTOM_RIGHT);
//提取寬度進行座標設置
auto size = visible.width;
button->setPositionX(size);
button->setPositionY(0);
//設置顯示比例
button->setScale(0.5);
//添加按鈕事件,按一下進行扣血
button->addTouchEventListener([&](Ref* ref, ui::Widget::TouchEventType type)
{
//假如類型是按下時,那麼血條減10
if (type == ui::Widget::TouchEventType::ENDED)
{
if (bar->getPercent() <= 0) //前體是還有血
{
auto button = dynamic_cast<Button*>(ref); //轉換類型
button->setEnabled(false); //設置權限
return;
}
bar->setPercent(bar->getPercent() - 10); //進行扣血
}
});
}
void MyButton::ComeBack(Ref* temp) //回調函數
{
Director::getInstance()->end();//場景推出
}