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);
}
發佈您的問題後,值得重新閱讀。代碼格式比可接受的更糟糕。 – 2012-12-14 21:23:18
沒有什麼(我知道的)阻止你同時擁有兩個NSTimers,所以我懷疑你的問題在別處。 –
您可以根據需要執行多個定時器。你的問題可能在你的代碼中的其他地方。 – Dancreek