作者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