无法从新的CCNode类中删除精灵

时间:2011-12-14 10:36:09

标签: cocos2d-iphone

我正在创建一个小游戏,目标是挖掘并摧毁鼠标。我为它创建了一个单独的鼠标类。

#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "HelloWorldLayer.h"
@interface Mouse : CCNode <CCTargetedTouchDelegate> {
    CCSprite *sprite;
    HelloWorldLayer *HelloLayer;
}
-(id) initWithGame:(HelloWorldLayer *)aGame;
-(void) runFloatAction;
@property(nonatomic, retain) CCSprite *sprite;
@property(nonatomic, retain) HelloWorldLayer *HelloLayer;
@end

我在.m文件中初始化如此:

-(id) initWithGame:(HelloWorldLayer *)aGame{
    if ((self = [super init])) {
        self.sprite = [CCSprite spriteWithFile:@"mouse.png"];
        self.sprite.scale = 0.3f + CCRANDOM_0_1() * 0.5f;
        self.sprite.position = ccp(CCRANDOM_0_1() * 480, CCRANDOM_0_1() * 320);
        self.HelloLayer = aGame;
        [aGame addChild:sprite];

        [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self 
                                                         priority:1 
                                                  swallowsTouches:YES];

        //[self runFloatAction];
    }

    return (self);
}

我想在点按时删除精灵。我在.m文件中使用此代码: -

- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{   
    if ([self containsTouchLocation:touch]) {
        [self.sprite removeFromParentAndCleanup:YES];
        return YES;
    }else{
        return NO;
    }
}

不幸的是我无法移除精灵。从逻辑上讲,我们必须从父级中删除精灵。但是,它实际上并没有起作用。

1 个答案:

答案 0 :(得分:0)

我构建类的方法是将Mouse类作为CCSprite的子类。如果您处理主游戏类中的触摸事件,则只需删除鼠标即可。如果您还没有这样做,还需要启用触摸事件。

我建议您按照上述步骤操作并将其放入游戏类中。

[self setIsTouchEnabled:YES];
Mouse *myMouse = [Mouse spriteWithImage:@"Mouse.png"];
[myMouse setPosition:CGPointMake(160, 240)];
[self addChild:myMouse];

然后只需处理游戏类中的触摸事件。