0

我知道如何检测屏幕上所有精灵的接触。我也知道如何在 sprite 上永远运行动画。

但是当将动画代码与精灵表放在一起时 - 你实际上并没有将精灵添加为子元素,而只是添加精灵表,而不是精灵是精灵表的子元素。

 [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"parrot.plist"];
    CCSpriteBatchNode *spriteSheet = [ CCSpriteBatchNode batchNodeWithFile:@"parrot.png"];

    fireBall=[CCSprite spriteWithSpriteFrameName:@"parrot1.png"];
    fireBall.position=point;
     [spriteSheet addChild:fireBall];
    [self addChild:spriteSheet];
    //here animation action perform on fireBall

在那种情况下,在寻找fireBall接触检测时 - 你找不到他,因为他没有被添加为场景的孩子,而是精灵表的孩子。

以后如何在我的代码中检测到该精灵?还是有另一个星座来设置精灵表?

谢谢

4

1 回答 1

0

你可以fireBall正常获取你的精灵,就像任何其他精灵一样......

有一些方法:

fireBall1)为您的精灵创建一个属性:

@property (nonatomic, retain) CCSprite *fireBall;

并使用以下方法创建和使用它self.fireball

self.fireBall=[CCSprite spriteWithSpriteFrameName:@"parrot1.png"];
...
CGPoint fireBallPosition = self.fireBall.position;

2)fireBall在使用标签上添加为孩子spriteSheet,并使用相同的标签将其取回。

 [spriteSheet addChild:fireBall z:0 tag:1];
 ...
 theFireBall = [spriteSheet getChildByTag:1];

但请记住,该fireBall位置是相对于其父级的,spriteSheet. 所以,如果你移动spriteSheet,你也会移动spriteSheet

于 2013-06-20T21:40:03.790 回答