Cocos2d-x:创建简单的进度条

时间:2013-07-18 02:52:16

标签: android cocos2d-x

我是Cocos2d-x的新手。

我想为我的游戏创建简单的进度/更新栏。

当此进度条已满时,我们将进入下一级别。

如何创建该栏。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

请参阅此内容 - How to use a progress bar in cocos2d-x and C++

基本上,为进度条的边框创建两个精灵,为加载栏本身创建一个精灵。

CCPointer  fuelBarBorder;

fuelBarBorder = 
     CCSprite::createWithSpriteFrameName ("bt_progressbarborder.png" );
fuelBarBorder->setPosition(ccp(100,100));
this->addChild(fuelBarBorder,1);




// CCProgresstimer object (smart pointer) 
CCPointer  fuelBar; 
fuelBar = CCProgressTimer::create(
     CCSprite::createWithSpriteFrameName ("bt_progressbar.png" ));

将加载条精灵的类型设置为CCProgressTimerType

// Set this progress bar object as kCCProgressTimerTypeBar (%)
fuelBar->setType(CCProgressTimerType::kCCProgressTimerTypeBar);

// Set anchor point in 0,0 and add it as a child to our border sprite
fuelBar->setAnchorPoint(ccp(0,0));

fuelBar->setBarChangeRate(ccp(1,0)); // To make width 100% always
fuelBar->setTag(1);                  // Tag our object for easy access

fuelBarBorder->addChild(fuelBar,50); // Add it inside the border sprite

在您的更新方法中,更改其percentage以反映加载百分比。

fuelBar->setPercentage(80); // Value between 0-100

答案 1 :(得分:0)

我写了原帖(上面的链接)。

感谢这篇文章,我发现WordPress播放了我......保存代码:(。

有一些更正:

CCPointer <CCSprite> fuelBarBorder; 

fuelBarBorder = 
  CCSprite::createWithSpriteFrameName ("bt_progressbarborder.png" ); 

fuelBarBorder->setPosition(ccp(100,100)); 

this->addChild(fuelBarBorder,1);

这是第一组,因为你可以看到唯一的变化是在第一行:

CCPointer <CCSprite> fuelBarBorder;

如果您没有此cocos2d-x扩展名,请使用以下命令:

CCSprite * fuelBarBorder;

第二组代码相同,正确的是:

CCPointer <CCProgressTimer> fuelBar;

fuelBar = CCProgressTimer::create(
 CCSprite::createWithSpriteFrameName ("bt_progressbar.png" ));
// Set this progress bar object as kCCProgressTimerTypeBar (%)
fuelBar->setType(CCProgressTimerType::kCCProgressTimerTypeBar);

// Set anchor point in 0,0 and add it as a child to our border sprite
fuelBar->setAnchorPoint(ccp(0,0));

fuelBar->setBarChangeRate(ccp(1,0)); // To make width 100% always
fuelBar->setTag(1);                  // Tag our object for easy access

fuelBarBorder->addChild(fuelBar,50); // Add it inside the border sprite

同样的事情是使用CCPointer(智能指针实现),如果你的项目中没有它,只需更改以下行:

CCPointer <CCProgressTimer> fuelBar;

这一个:

CCProgressTimer fuelBar;

这应该使代码有效,我希望这有助于!!!!