Невозможно удалить спрайт из нового класса CCNode - PullRequest
0 голосов
/ 14 декабря 2011

Я создаю маленькую игру, цель которой - нажать и уничтожить мышь. Я создал отдельный класс мыши для него.

#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 голосов
/ 16 декабря 2011

Я структурирую свои классы так, чтобы класс Mouse был подклассом CCSprite.Если вы обрабатываете сенсорные события в основном игровом классе, вы просто удаляете мышь.Вам также нужно включить сенсорные события, если вы этого еще не сделали.

Я рекомендую вам сделать выше и поместить это в свой класс игры.

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

Тогда просто обработайте сенсорные событияв вашем игровом классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...