以编程方式向cocos2d游戏添加进度条

时间:2012-11-09 01:48:09

标签: iphone objective-c cocos2d-iphone

我正在使用cocos2d进行游戏,并希望实现一个进度条来表示我的玩家的健康状况。我引用了how to create a progressbar programmatically,但CCLayer没有.view属性。有人可以指出我正确的方向或帮助我吗?

谢谢你, 乔伊

4 个答案:

答案 0 :(得分:2)

抓取以下图片:http://i.stack.imgur.com/O5DRf.png。它是2x30。我想制作一个15像素高的条形图。通常,尺寸为1x15,但由于我假设你正在使用视网膜显示器,我们必须将这样的尺寸加倍到2x30。

用它创建一个CCSprite,并将锚点设置为ccp(0.0,0.5):

CCSprite *bar = [CCSprite spriteWithFile:@"MyBar.png"];   // Create it
bar.position = ccp(240,160);                                // Position it
bar.anchorPoint = ccp(0.0,0.5);                           // Anchor point

现在的问题是,健康栏有多长(最大)?我们说它长200像素。因此,100%= 200像素长。我们将其设置为200像素长:

bar.scaleX = 200;    // The bar is 200 pixels long now

那么,50%的健康怎么样?然后,显然,属性.scaleX应为100。

bar.scaleX = 100;    // The bar is 100 pixels long now (50% health)

您可能需要快速创建一个简单的栏。

答案 1 :(得分:1)

cocos2d中有一个类“CCProgressTimer”可以做到这一点。希望它会有所帮助。

CCProgressTimer *lifeBar=[CCProgressTimer progressWithFile:@"lifeBar.png"];
lifeBar.type=kCCProgressTimerTypeHorizontalBarLR;
lifeBar.position=ccp(384,900);
lifeBar.percentage=100;
[self lifeBar z:20];
[lifeBar runAction:[CCProgressFromTo actionWithDuration:5.0 from:100.0 to:0.0]];

答案 2 :(得分:0)

在cocos2d中,您可以使用[[CCDirector sharedDirector]openGLView]代替.view

您可以将progressView添加到其中。此openGLView的坐标系也是如此,它的原点位于左上角。

答案 3 :(得分:0)

我最终制作了自己的进度条精灵,就像欧米茄推荐的那样。我为一个矩形的“健康栏”轮廓创建了一个精灵,另一个精灵代表了一个微小的健康段,我根据需要添加和删除它们以表示正确的健康状况。

CGPoint position = ccp(150, 450);
CCTexture2D *texture = [[CCTexture2D alloc] initWithImage:[UIImage imageNamed:@"healthSegment.png"]];

// Begin at 4 because health segments have tags 4-13
for(int i = 4; i < health + 4; i++)
{
    CCSprite *healthBar = [CCSprite spriteWithTexture:texture];
    [healthBar setPosition:position];
    [self addChild:healthBar z:5 tag:i];

    position.x += 10;
}