2014-01-30 68 views
0

我正在通电制作游戏。我有3个通电。当上电启动时,我使用一个整数来标识它是哪一个,1,2或3,0表示没有活动的通电。一旦我启动加电,我希望它在一段时间间隔后,例如10秒过期。如何将标识符整数重置为0?在一段时间间隔后更改一个整数值ios

例如,一次加电会加快船的运行速度。这是我的更新方法。

-(void) update:(ccTime)dt 
{ 
if (powerupIdentifier == 0) 
{ 
    shipSpeed = 100; 
} 
if (powerupIdentifier == 1) 
{ 
    shipSpeed = 200; 
} 


CCArray* touches = [KKInput sharedInput].touches;  
if ([touches count] == 1) 
{ 
    //MAKES SHIP MOVE TO TAP LOCATION 
    KKInput * input = [KKInput sharedInput]; 
    CGPoint tap = [input locationOfAnyTouchInPhase:KKTouchPhaseBegan]; 
    ship.position = ccp(ship.position.x, ship.position.y); 
    if (tap.x != 0 && tap.y != 0) 
    { 
     [ship stopAllActions]; // Nullifies previous actions 
     int addedx = tap.x - ship.position.x; 
     int addedy = tap.y - ship.position.y; 
     int squaredx = pow(addedx, 2); 
     int squaredy = pow(addedy, 2); 
     int addedSquares = squaredx + squaredy; 
     int distance = pow(addedSquares, 0.5); 
     [ship runAction: [CCMoveTo actionWithDuration:distance/shipSpeed position:tap]];//makes ship move at a constant speed 

    } 
} 

}

+0

你可以在这里粘贴一些相关的代码,所以我们可以更好地理解方法你正在使用的时间? – heinst

回答

4

首先,使用enum而非int

typedef NS_ENUM(unsigned short, PowerUp) { 
    PowerUp_Level0, 
    PowerUp_Level1, 
    PowerUp_Level2, 
    PowerUp_Level3 
}; 

Enum更具可读性,并且是更多的自我记录然后随机整数。

现在,假设我们有一个属性:

@property (nonatomic, assign) PowerUp powerUp; 

我们可以写一个方法来重置功率达:

- (void)resetPowerUp { 
    self.powerUp = PowerUp_Level0; 
} 

现在,当我们将它设置为某个非零值,并需要重置它(10秒后),它是这样简单:

self.powerUp = PowerUp_Level2; 
[self performSelector:@selector(resetPowerUp) withObject:nil afterDelay:10.0f]; 
+0

@Pavan这不是讽刺,我通过它的标签来判断问题,所以我错误地认为这个问题与cocos2d有关。我在这个问题上,因为我正在和nhgrif谈话。 – borrrden

+0

@borrrden,啊,对不起。没问题。 – Pavan