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です。
私は何を間違えましたか..これから私を助けてください