1

最近、cocos2d の最新バージョンで CCProgressTimer クラスが CCProgressNode に置き換えられていることを発見しましたが、次のコードを実装しようとすると、progressNode に何も起こりません。最新のメソッドをすべて使用しました。これはすべて gamePlay クラスで行われます これがノードの定義方法です。

CCProgressNode *_healthBar;
float _life;

これがsetUpメソッドです

- (void)initializeHealthBar {
    self->_healthBar = [[CCProgressNode alloc] init]; // This wasn't there before, but thought   it might be the memory allocation problem,
    // _health is the code connection between sprite builder and Xcode.
    self->_healthBar = [CCProgressNode progressWithSprite:_health]; 
    [_healthBar setType:CCProgressNodeTypeBar];
    [_healthBar setPercentage:_life];
    [_healthBar setBarChangeRate:ccp(0.1,0.1)];
    _healthBar.position = _health.position;
    // So the _healthBar turns out positioned correctly, because _health is already positioned in sprite builder
    [_contentNode addChild:_healthBar];

}

これは、ヘルスバーの変更を呼び出す方法です...(動作します、ヘルスバーが枯渇しています...)

-(void) hit {
    if(_healthBar.percentage > 0)
    {
    self->_life -= 34;
    self->_healthBar.percentage -= 34;
    }
    if (self->_healthBar.percentage <= 0 && ![_myHero isGameOver]) {
        self->_healthBar.percentage = 0;
        [_myHero isGameOver: TRUE];
        [self gameOver];
    }
}
4

1 に答える 1

3

私はあなたの問題を完全には理解していません。左 -> 右バー タイプ プログレス バーの小さな動作例を書いたところです。

- (void) onEnter
{
    [super onEnter];

    CCSprite *sprite = [CCSprite spriteWithImageNamed:@"emma.png"];
    _progressNode = [CCProgressNode progressWithSprite:sprite];
    _progressNode.type = CCProgressNodeTypeBar;
    _progressNode.midpoint = ccp(0.0f, 0.0f);
    _progressNode.barChangeRate = ccp(1.0f, 0.0f);
    _progressNode.percentage = 0.0f;

    _progressNode.positionType = CCPositionTypeNormalized;
    _progressNode.position = ccp(0.5f, 0.5f);
    [self addChild:_progressNode];

    self.userInteractionEnabled = YES;
}

- (void) touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
    _progressNode.percentage += 10.0f;
}

はシーンに追加されないことに注意してください。残念CCSpriteながら、そのシーンには使用できませんSpriteBuilder。(親から削除したいが、それが少し面倒になる場合を除きます)

また、パーセンテージ セッターを呼び出す前に、すべての設定を行ってください。

そしてpercentageは実際にはdoubleです。キャストの問題が発生していないことを常に確認してください。

于 2014-04-18T00:00:11.713 に答える