2011-12-14 5 views
0

私は目標をタップしてマウスを破壊する小さなゲームを作成しています。私はそれのための別のマウスクラスを作成しました。新しいCCNodeクラスからスプライトを削除することはできません

#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

これはうまくいくはずです。そのスプライトを保持していることを忘れないでください(プロパティは保持されます)。親から削除した後にスプライトを解放するには、self.sprite = nilを実行します。 – Ultrakorne

+0

ありがとうございました..私はself.sprite = nilを行い、それは私のために働きます.. –

+0

チャイルドとして追加されたCCNodesを使用する場合は、そのプロパティを宣言し、保持しない方が望ましいです。スプライトはその親によって保持されるので、実際にスプライトを親から取り除いた後に覚えておく必要はありません – Ultrakorne

答えて

0

私のクラスを構造化する方法は、CCSpriteのサブクラスとしてMouseクラスを持つことです。メインゲームクラスのタッチイベントを処理する場合は、マウスを削除するだけです。タッチイベントを有効にしていない場合は有効にする必要があります。

私は上記を行い、あなたのゲームクラスにこれを入れることをお勧めします。

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

ゲームクラスでタッチイベントを処理するだけです。

関連する問題