cocos2d でゲームを作成しており、プレイヤーの健康状態を表すプログレス バーを実装したいと考えています。プログレスバーをプログラムで作成する方法を参照しましたが、CCLayer には .view 属性がありません。誰かが私を正しい方向に向けるか、助けてくれますか?
ありがとう、ジョーイ
cocos2d でゲームを作成しており、プレイヤーの健康状態を表すプログレス バーを実装したいと考えています。プログレスバーをプログラムで作成する方法を参照しましたが、CCLayer には .view 属性がありません。誰かが私を正しい方向に向けるか、助けてくれますか?
ありがとう、ジョーイ
次の画像を取得します:http://i.stack.imgur.com/O5DRf.png。2x30です。高さ15ピクセルのバーを作りたいです。通常、サイズは1x15ですが、Retinaディスプレイを使用していると想定しているため、このようなサイズを2倍の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)
単純なバーをすばやく作成するために必要なのは、これだけです。
それを行うためのクラス「CCProgressTimer」がcocos2dにあります。それが役立つことを願っています。
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]];
私は結局、オメガが推奨するような自分のプログレスバースプライトを作ることになりました。長方形の「ヘルスバー」アウトライン用に1つのスプライトを作成し、小さなヘルスセグメントを表す別のスプライトを作成しました。このスプライトでは、正しいヘルスを表すために必要に応じてそれらを追加および削除します。
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;
}
[[CCDirector sharedDirector]openGLView]
cocos2dでは、.view の代わりに使用できます
それにprogressViewを追加できます。また、この openGLView の座標系は、原点が左上になるようになっています。