2012-12-14 54 views
2

我試着運行2個NSTimer。我注意到它不起作用。是否有可能運行2 NSTimer?我試圖在球移動時啓動一個計數器。但是,如果我開始它,敵方的球從開始時開始,當櫃檯來到下一秒。當然這個遊戲還沒有完成。運行兩個NSTimer而不讓第一個NSTimer影響第二個?

這裏是我的「項目」:

//.h 
@interface ViewController : UIViewController { 

    IBOutlet UIButton *startButton; 
    NSTimer *randomMain; 
    CGPoint pos; 
    IBOutlet UIImageView *enemy; 
    IBOutlet UIImageView *player; 

    IBOutlet UIButton *startCounter; 

    IBOutlet UILabel *seconds; 
    NSTimer *timer; 
    int MainInt; 
} 

-(IBAction)start2:(id)sender; 

- (IBAction)start; 

//.m 

@implementation ViewController 

-(void)countup { 
    MainInt += 1; 
    seconds.text = [NSString stringWithFormat:@"%i", MainInt]; 
} 

-(IBAction)start2:(id)sender { 
    MainInt = 0; 
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countup)userInfo:nil repeats:YES]; 
} 

- (IBAction)start { 
    [startButton setHidden:YES]; 
    randomMain = [NSTimer scheduledTimerWithTimeInterval:(0.03) target:self selector: @selector(onTimer) userInfo:(nil) repeats:YES]; 
} 

-(void)onTimer{ 
    [self checkCollision]; 

    enemy.center = CGPointMake(enemy.center.x+pos.x,enemy.center.y+pos.y); 

    if (enemy.center.x > 320 || enemy.center.x < 0) 
     pos.x = -pos.x; 
    if (enemy.center.y > 480 || enemy.center.y < 0) 
     pos.y = -pos.y; 
} 

- (void)checkCollision { 

    if(CGRectIntersectsRect(player.frame,enemy.frame)) 
    { 
     [randomMain invalidate]; 
     [startButton setHidden:NO]; 

     CGRect frame = [player frame]; 
     frame.origin.x = 137.0f; 
     frame.origin.y = 326.0; 
     [player setFrame: frame]; 

     CGRect frame2 = [enemy frame]; 
     frame2.origin.x = 137.0f; 
     frame2.origin.y = 20.0; 
     [enemy setFrame: frame2]; 

     UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"You hit the ball!" message: [NSString stringWithFormat:@"Try it again!"] delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil]; 
     [alert show]; 
    } 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *myTouch = [[event allTouches] anyObject]; 
    player.center = [myTouch locationInView:self.view];  
} 

-(void)viewDidLoad { 
    [super viewDidLoad]; 
    // X Speed Y Speed 
    pos = CGPointMake(5.0,4.0); 
} 
+0

發佈您的問題後,值得重新閱讀。代碼格式比可接受的更糟糕。 – 2012-12-14 21:23:18

+0

沒有什麼(我知道的)阻止你同時擁有兩個NSTimers,所以我懷疑你的問題在別處。 –

+0

您可以根據需要執行多個定時器。你的問題可能在你的代碼中的其他地方。 – Dancreek

回答

0

嘗試在不同的thread.ie運行秒計時器它是在一個單獨的thread.call該函數運行如果要設置第二個函數寫計時器。

+0

我把它放在h上。文件並像這樣寫下來@property(nonatomic,retain)NSTimer * numro; –

相關問題