2010-04-02 3 views
0

Я использую акселерометр для перемещения нескольких UIImageViews вокруг экрана, в настоящий момент акселерометр работает только тогда, когда NSTimer находится на 0, это нормально. Я также хотел бы, чтобы акселерометр останавливался снова, когда происходит другая функция.IPhone sdk остановить акселерометр от работы, когда что-то происходит

вот мой код на данный момент:

-(BOOL) accelerometerWorks { 
return time == 0; 
} 

-(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{ 
if(![self accelerometerWorks]) return; 
valueX = acceleration.x*25.5; 



int newX = (int)(ball.center.x +valueX); 
if (newX > 320-BALL_RADIUS) 
    newX = 320-BALL_RADIUS; 
if (newX < 0+BALL_RADIUS) 
    newX = 0+BALL_RADIUS; 


int XA = (int)(balloonbit1.center.x +valueX); 
if (XA > 320-BALL_RADIUS) 
    XA = 320-BALL_RADIUS; 
if (XA < 0+BALL_RADIUS) 
    XA = 0+BALL_RADIUS; 


int XB = (int)(balloonbit2.center.x +valueX); 
if (XB > 320-BALL_RADIUS) 
    XB = 320-BALL_RADIUS; 
if (XB < 0+BALL_RADIUS) 
    XB = 0+BALL_RADIUS; 

int XI = (int)(balloonbit3.center.x +valueX); 
if (XI > 320-BALL_RADIUS) 
    XI = 320-BALL_RADIUS; 
if (XI < 0+BALL_RADIUS) 
    XI = 0+BALL_RADIUS; 

int XJ = (int)(balloonbit4.center.x +valueX); 
if (XJ > 320-BALL_RADIUS) 
    XJ = 320-BALL_RADIUS; 
if (XJ < 0+BALL_RADIUS) 
    XJ = 0+BALL_RADIUS; 


int XE = (int)(balloonbit5.center.x +valueX); 
if (XE > 320-BALL_RADIUS) 
    XE = 320-BALL_RADIUS; 
if (XE < 0+BALL_RADIUS) 
    XE = 0+BALL_RADIUS; 


int XF = (int)(balloonbit6.center.x +valueX); 
if (XF > 320-BALL_RADIUS) 
    XF = 320-BALL_RADIUS; 
if (XF < 0+BALL_RADIUS) 
    XF = 0+BALL_RADIUS; 


int XH = (int)(balloonbit8.center.x +valueX); 
if (XH > 320-BALL_RADIUS) 
    XH = 320-BALL_RADIUS; 
if (XH < 0+BALL_RADIUS) 
    XH = 0+BALL_RADIUS; 


ball.center = CGPointMake (newX, 429); 
balloonbit1.center = CGPointMake (XA, 429); 
balloonbit2.center = CGPointMake (XB, 426); 
balloonbit3.center = CGPointMake (XI, 410); 
balloonbit4.center = CGPointMake (XJ, 415); 
balloonbit5.center = CGPointMake (XE, 409); 
balloonbit6.center = CGPointMake (XF, 427); 
balloonbit8.center = CGPointMake (XH, 417); 

} 

Это все работает отлично, я хотел бы теперь остановить акселерометр от работы, используя тот же метод

accelerometerWorks или новый метод, accelerometerWontWork ,

Это код, который, когда он называется, хотел бы остановить акселерометр. (Это очень долго, так что я не буду ставить все это есть, но все-таки во всем):

-(void) checkCollision{ 

if (CGRectIntersectsRect(pinend.frame, balloonbit1.frame)){ 
    if (balloonbit1.frame.origin.y > pinend.frame.origin.y){ 
    [maintimer invalidate]; 
    levelfailed.center = CGPointMake (160, 235); 
    } 
} 
if (CGRectIntersectsRect(pinend.frame, balloonbit2.frame)){ 
    if (balloonbit2.frame.origin.y > pinend.frame.origin.y){ 
    [maintimer invalidate]; 
    levelfailed.center = CGPointMake (160, 235); 
    } 
} 
if (CGRectIntersectsRect(pinend.frame, balloonbit3.frame)){ 
    if (balloonbit3.frame.origin.y > pinend.frame.origin.y){ 
    [maintimer invalidate]; 
    levelfailed.center = CGPointMake (160, 235); 
    } 
} 
} 

Я понимаю, что я, возможно, придется превратить это в BOOL. Хорошо.

Если я не объяснил это, пожалуйста, скажите, и я напишу его.

Спасибо! Гарри.

+0

Удар, кому угодно? – Harry

ответ

7
accelManeger = [UIAccelerometer sharedAccelerometer]; 
accelManeger.delegate = nil; 

, который остановит вас на получение событий. Затем установите себя как делегат, когда вы хотите начать все заново.

+0

THANKYOU! Работает как шарм. На самом деле не могу поблагодарить вас! Ledgend :) – Harry

+0

@Spyker: Спасибо, это сработало для меня :) +1! –

 Смежные вопросы

  • Нет связанных вопросов^_^