看板 MacDev 關於我們 聯絡資訊
承上一問 我使用NSTimer能讓它動了 (跳下一個frame是使用glFlush()而不是[[self openGLContext] flushBuffer]) 這是我用的語法: @implementation GLview - (void) handleTimer: (NSTimer *) timer { rtri+=1; [self setNeedsDisplay:YES]; } - (void)drawRect:(NSRect)rect { ... glRotatef(rtri,1,0,0); //在這裡畫圖 glFlush(); timer = [NSTimer scheduledTimerWithTimeInterval: 0.000001 target: self selector: @selector(handleTimer:) userInfo: nil repeats: YES]; } 不過有一個奇怪的問題 就是它會愈轉愈慢,最後整個程式當掉...囧 官網上是用IBAction的方式來start timer 用法如下 - (IBAction)startOneOffTimer:sender { [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(targetMethod:) userInfo:[self userInfo] repeats:NO]; } 是要在什麼地方release timer嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.96.223
dryman:自問自答:將repeats改成NO就不會愈跑愈慢了^ ^ 12/20 22:11
icecicada:因為你draw多一次產生一個timer,timer越來越多就產生這 12/20 22:39
icecicada:種現象了..... 12/20 22:39
Blueshiva:把timer放在外面,然後在程式啟動的時候驅動一次就好了 12/20 22:48
Blueshiva:不過記得repeats要設成YES 12/20 22:48
dryman:謝謝大家! 12/21 00:19