作者dryman (dryman)
看板MacDev
標題[問題] NSTimer
時間Sat Dec 20 21:57:10 2008
承上一問
我使用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
1F:→ dryman:自問自答:將repeats改成NO就不會愈跑愈慢了^ ^ 12/20 22:11
2F:推 icecicada:因為你draw多一次產生一個timer,timer越來越多就產生這 12/20 22:39
3F:→ icecicada:種現象了..... 12/20 22:39
4F:推 Blueshiva:把timer放在外面,然後在程式啟動的時候驅動一次就好了 12/20 22:48
5F:→ Blueshiva:不過記得repeats要設成YES 12/20 22:48
6F:→ dryman:謝謝大家! 12/21 00:19