2012-10-10 68 views
1

我做了一个简单的物理sprite,它会自动触发更新选择器,并相应地将sprite移动到b2body成员集。如何在cocos2d中正确地覆盖超类更新方法

但是,当我做了物理sprite的子类,我想扩展该更新方法来做更多的动作。当我重写这个更新方法时,我需要调用超类更新方法,以便在我在子类中完成业务之前完成业务。

下面是一些代码:

超类:

/** 
* SELECTOR 
* This selector updates the sprites position 
*/ 
-(void) update:(ccTime) dt { 
    CCLOG(@"PSprite update"); 
    if (self.body) { 

     //Get the body's position in pixels 
     CGPoint newLocationForSprite = ccp(self.body->GetPosition().x * PTM_RATIO, self.body->GetPosition().y * PTM_RATIO); 
     //positioning self 
     [self setPosition:newLocationForSprite]; 
    } 
} 

子类:

-(void) update:(ccTime) dt { 
//I want to call my superclass's update method 
CCLOG(@"Subclass update"); 
} 

回答

4

子类代码

- (void) update:(ccTime)dt 
{ 
    [super update: dt]; 

    // do anything you want 
} 
+0

看来,这不是一个公共方法,这它应该是,但对我的情况我需要它。太糟糕了,它们在Objective C中不受保护,我会接受这一点 – chrs

相关问题