2009-12-08 80 views
0

我正在使用此功能來創建移動,我該如何停止移動?我希望它恢復到起點。謝謝。iphone - 停止和恢復方法

[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(shuffleOnTimer) userInfo:nil repeats:YES]; 

-(void) shuffleOnTimer { 

    jb.center = CGPointMake(jb.center.x+pos1.x,jb.center.y+pos1.y); 

    if(jb.center.x > 60 || jb.center.x < 0) 
    pos1.x = -pos1.x; 
    if(jb.center.y > 240 || jb.center.y < 100) 
    pos1.y = -pos1.y;} 

回答

2

在某些時候,您應該使計時器無效。你需要一個參考存儲它爲了做到這一點:

在你的頭文件:

@class myClass : NSObject { 
    .... 
    NSTimer  *timer; 
    CGPoint  originalPoint; 
    ... 
} 
@property (nonatomic, readwrite, assign) NSTimer *timer; 
@property (nonatomic, readwrite) CGPoint originalPoint; 

在您的實現文件:

self.originalPoint = jb.position; 
self.timer = [NSTimer scheduledTimerWithTimeInterval… 

一些後點:

[self.timer invalidate]; 
self.timer = nil;   //very important, to avoid dangling pointers 
jb.position = self.originalPoint; 
+0

使用自我獲取編譯器錯誤(對象不能設置...) – omri 2009-12-08 03:40:26

+0

正如他所說,你需要存儲一個引用到定時器。在他的例子中,他讓計時器成爲當前班的一個屬性。 – 2009-12-08 05:44:09

+0

現在的作品,但這隻停止動畫,我該如何恢復到起始位置? – omri 2009-12-08 12:34:28