0

CCAnimationを介してアニメーション化されたスプライトを削除し、それに触れると、値を1つ減らしたいのですが、結果として1つ以上の値が減ります。これはスコアを示しています:

public void showLabel(int scr)
{       
    if(scoreLabel != null){
        this.removeChild(scoreLabel,true);
    }
    CGSize winSize = CCDirector.sharedDirector().displaySize();
    scoreLabel = CCLabel.makeLabel("Score : " + scr, "Verdana", 20);
    scoreLabel.setColor(ccColor3B.ccBLACK);
    scoreLabel.setPosition(55f, winSize.height - 15);
    addChild(scoreLabel);

これはスプライトの検出と交差を処理します:

ArrayList<CCSprite> targetuToDelete = new ArrayList<CCSprite>();    
for(CCSprite targetd : _targetd)
        {
              CGRect targetRect11 = CGRect.make(targetd.getPosition().x - (targetd.getContentSize().width),
                                                targetd.getPosition().y - (targetd.getContentSize().height),
                                                targetd.getContentSize().width,
                                                targetd.getContentSize().height);
              if (CGRect.intersects(projectileRect, targetRect11))
                  targetdToDelete.add(targetd);
              else
                  projectilesToDelete.add(projectile);
        }
        for(CCSprite targetd : targetdToDelete){
            life--;
            lifeLabel(life);
            spriteMoveFinished(targetd);
        } 

これはスプライトのアニメーションを提供します:

Random rand = new Random();
    CCSprite targetd = CCSprite.sprite("dance.png");

    CGSize winSize = CCDirector.sharedDirector().displaySize();

    int minX= (int) (targetd.getContentSize().width/2.0f);
    int maxX= (int) (winSize.width-targetd.getContentSize().width/2.0f);
    int rangeX = maxX-minX;
    int actualX = rand.nextInt(rangeX)+minX;

    targetd.setPosition(actualX,0 + (targetd.getContentSize().height / 2.0f));

    _targetd.add(targetd);

    int minDuration = 4;
    int maxDuration = 8;
    int rangeDuration = maxDuration - minDuration;
    int actualDuration = rand.nextInt(rangeDuration) + minDuration;



    CCAnimation animation = CCAnimation.animation("dance");
    for( int i=1;i<7;i++)
        animation.addFrame(String.format("step-%02d.png", i));

    CCMoveTo actionMove = CCMoveTo.action(actualDuration, CGPoint.ccp( actualX, winSize.height));

    CCAnimate action = CCAnimate.action(3f, animation, false);

    CCAnimate action_back = action.reverse();

    CCCallFuncN actionMoveDone = CCCallFuncN.action(this, "spriteMoveFinished");
    CCFiniteTimeAction parallelAction = CCSpawn.actions( action, actionMove, action_back );
    targetd.runAction( parallelAction );
    addChild(targetd,2); 

のように:値は5ですが、アニメーション化されたスプライト値に触れると4ですが、見つかった結果は2または場合によっては0です。

私は何を間違えましたか..これから私を助けてください

4

0 に答える 0