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

Cocos2d iphone 无法从新的CCNode类中删除精灵,cocos2d-iphone,Cocos2d Iphone,我正在创建一个小游戏,目标是点击并摧毁鼠标。我为它创建了一个单独的鼠标类 #import <Foundation/Foundation.h> #import "cocos2d.h" #import "HelloWorldLayer.h" @interface Mouse : CCNode <CCTargetedTouchDelegate> { CCSprite *sprite; HelloWorldLayer *HelloLayer; } -(id) in

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

#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文件中为其使用此代码:-

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

不幸的是,我无法删除雪碧。从逻辑上讲,我们必须从父对象中删除sprite。但是,它实际上不起作用。

我构造类的方式是将鼠标类作为CCSprite的子类。如果您在主游戏类中处理触摸事件,则只需移除鼠标。如果尚未启用触摸事件,则还需要启用触摸事件

我建议你做上面的,并把它放在你的游戏课上

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

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

应该可以。但请记住,您保留的是您所拥有的精灵。您可以执行self.sprite=nil以在从其父级移除后释放该精灵。非常感谢。。我做了self.sprite=nil,它对我有效。如果使用添加为child的CCNodes,最好声明属性assign而不是retain。精灵由其父级保留,因此您不需要记住在从其父级移除后实际释放精灵。啊,好的。。谢谢你的帮助。。从一周开始,我就因为同样的问题而陷入困境。。
[self setIsTouchEnabled:YES];
Mouse *myMouse = [Mouse spriteWithImage:@"Mouse.png"];
[myMouse setPosition:CGPointMake(160, 240)];
[self addChild:myMouse];