2011-12-11 38 views
3
// on "init" you need to initialize your instance 
-(id) init 
{ 
    // always call "super" init 
    // Apple recommends to re-assign "self" with the "super" return value 
    if((self=[super init])) { 
     buttonPressed = NO; 

     CCMenuItem *myMenuItem = [CCMenuItemImage itemFromNormalImage:@"Icon-72.png" selectedImage:@"Icon-Small.png"target:self selector:@selector(menuSelector:)]; 
     CCMenu *myMenu = [CCMenu menuWithItems:myMenuItem, nil]; 
     myMenu.position = ccp(50, 50); 
     // add the label as a child to this Layer 
     [self addChild: myMenu]; 
    } 
    return self; 
} 

-(void)menuSelector:(id)sender{ 
    CCSprite *mySprite = [CCSprite spriteWithFile:@"Icon.png"]; 
    mySprite.position = ccp(100, 100); 
    if (!buttonPressed) { 
     buttonPressed = YES; 
     [self addChild:mySprite]; 

    } 
    else{ 
     [self removeChild:mySprite cleanup:YES]; 
     buttonPressed = NO; 
    } 

} 

爲什麼removeChild:mySprite不工作?我第二次按下按鈕(myMenuItem)後mySprite仍然在那裏。請幫幫我。謝謝。Cocos2d removeChild不能正常工作

回答

2

每次你點擊按鈕,你都會創建一個新的精靈實例。您可能更適合創建並將其添加爲類變量,以便您可以使用所有方法訪問它,然後根據需要設置可見性的開啓或關閉。