我正在使用cocos2d进行游戏,并希望实现一个进度条来表示我的玩家的健康状况。我引用了how to create a progressbar programmatically,但CCLayer没有.view属性。有人可以指出我正确的方向或帮助我吗?
谢谢你, 乔伊
答案 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;
}