我使用NSTimer每1秒移动一次UIImageView,我想每2秒将时间从1减少到0.5,结果图像在视图内移动得更快。任何想法都会非常有用。
这是我用来移动UIImageView的计时器
float obstaclesSpeed = 1.0;
movementTimer = [NSTimer scheduledTimerWithTimeInterval:obstaclesSpeed target:self selector:@selector(updateSpeed) userInfo:nil repeats:YES];
这是我的代码
-(void)updateSpeed {
obstaclesSpeed = obstaclesSpeed / 2;
[self startMoveObstacles];
}
我相信我做错了什么
答案 0 :(得分:0)
您想要每2秒移动一次图像,还是让它移动速度越来越快?如果你每2秒移动一次,它就不会移动得更快。
你可以阅读NSTimer的文档,但要解决一些令人头疼的问题,这里有一些如何使用NSTimer的例子。
如果您想每两秒移动一次,可以执行以下操作。
- (void) startTimer {
[_myTimer invalidate];
_myTimer = nil;
_myTimer = [NSTimer timerWithTimeInterval:2. target:self selector:@selector(respondToTimer:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:_myTimer forMode:NSRunLoopCommonModes];
}
- (void)respondToTimer:(NSTimer*)timer {
//Code to move your UIImageView
}
如果您想要越来越快地移动它,您可以执行以下操作。
- (void) startTimer {
[_myTimer invalidate];
_myTimer = nil;
_myTimer = [NSTimer timerWithTimeInterval:_timeInterval target:self selector:@selector(respondToTimer:) userInfo:nil repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:_myTimer forMode:NSRunLoopCommonModes];
}
- (void)respondToTimer:(NSTimer*)timer {
//Code to move your UIImageView
_numberOfMoves++;
if (_numberOfMoves < MAX_MOVES) {
_timeInterval /= 2;
[self startTimer];
}
}