我正在创建一个小游戏,目标是挖掘并摧毁鼠标。我为它创建了一个单独的鼠标类。
#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;
}
}
不幸的是我无法移除精灵。从逻辑上讲,我们必须从父级中删除精灵。但是,它实际上并没有起作用。
答案 0 :(得分:0)
我构建类的方法是将Mouse类作为CCSprite的子类。如果您处理主游戏类中的触摸事件,则只需删除鼠标即可。如果您还没有这样做,还需要启用触摸事件。
我建议您按照上述步骤操作并将其放入游戏类中。
[self setIsTouchEnabled:YES];
Mouse *myMouse = [Mouse spriteWithImage:@"Mouse.png"];
[myMouse setPosition:CGPointMake(160, 240)];
[self addChild:myMouse];
然后只需处理游戏类中的触摸事件。