2013-08-13 21 views
5

मेरे पास एक गेम है जो टाइमर का उपयोग करता है। मैं इसे बनाना चाहता हूं ताकि उपयोगकर्ता एक बटन का चयन कर सके और यह उस टाइमर को रोक देता है और जब वे फिर से उस बटन पर क्लिक करते हैं, तो वह उस टाइमर को रोक देगा। मेरे पास पहले से टाइमर के लिए कोड है, टाइमर और दोहरी-क्रिया बटन को रोकने के साथ बस कुछ मदद की ज़रूरत है। टाइमर कोएनएसटीमर को कैसे रोकें?

कोड:

-(void)timerDelay { 

    mainInt = 36; 

    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 
             target:self 
             selector:@selector(countDownDuration) 
             userInfo:nil 
             repeats:YES]; 
} 

-(void)countDownDuration { 

    MainInt -= 1; 

    seconds.text = [NSString stringWithFormat:@"%i", MainInt]; 
    if (MainInt <= 0) { 
     [timer invalidate]; 
     [self delay]; 
    } 

} 
+0

टीबीएलयू का जवाब सही के रूप में चिह्नित करना सही था अगर यह आपकी मदद करता था। आपको उस कोड को अपने प्रश्न में संपादित करने या शीर्षक में [SOLVED] जोड़ने की आवश्यकता नहीं है। मैं StackOverflow में पोस्ट करने के उचित तरीकों के बारे में अधिक जानने के लिए [सहायता] पढ़ने की अनुशंसा करता हूं। – madth3

उत्तर

16

यह बहुत आसान है।

// Declare the following variables 
BOOL ispaused; 
NSTimer *timer; 
int MainInt; 

-(void)countUp { 
    if (ispaused == NO) { 
     MainInt +=1; 
     secondField.stringValue = [NSString stringWithFormat:@"%i",MainInt]; 
    } 
} 

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

- (IBAction)pause1Clicked:(id)sender { 
    ispaused = YES; 
} 

- (IBAction)resume1Clicked:(id)sender { 
    ispaused = NO; 
} 
5

कोई ठहराव नहीं है और NSTimer में कार्यक्षमता को फिर से शुरू। आप इसे नीचे कोड की तरह लगा सकते हैं।

- (void)startTimer 
{ 
    m_pTimerObject = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(fireTimer:) userInfo:nil repeats:YES]; 
} 

- (void)fireTimer:(NSTimer *)inTimer 
{ 
    // Timer is fired. 
} 

- (void)resumeTimer 
{ 
    if(m_pTimerObject) 
    { 
     [m_pTimerObject invalidate]; 
     m_pTimerObject = nil;   
    } 
    m_pTimerObject = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(fireTimer:) userInfo:nil repeats:YES]; 
} 

- (void)pauseTimer 
{ 
    [m_pTimerObject invalidate]; 
    m_pTimerObject = nil; 
} 
+5

यह रोक नहीं है, यह बस बंद हो जाता है और फिर से शुरू होता है। –

+0

@CarlVeazey उत्तर के रूप में, 'NSTimer' में कोई" रोकें "कार्यक्षमता नहीं है, इसलिए किसी भी उत्तर (स्वीकृत सहित) को उस तथ्य के आसपास काम करना चाहिए। यह उत्तर स्वीकार किए गए व्यक्ति से बेहतर है क्योंकि यह टाइमर नहीं रखता है जो कुछ भी मूल्यवान नहीं चल रहा है। +1 –

+0

@ डुप्लिकेट में उत्तर दें इस तथ्य के आसपास काम करने लगते हैं जबकि अभी भी विराम कार्यक्षमता प्रदान करते हैं। मुझे नहीं लगता कि यह इंगित करने के लिए अनुचित है। –

संबंधित मुद्दे