2010-04-02 12 views
0

J'utilise l'accéléromètre pour déplacer quelques UIImageViews autour de l'écran, au moment où l'accéléromètre ne fonctionne que lorsqu'un NSTimer est à 0, c'est bien. Je voudrais également faire arrêter à nouveau l'accéléromètre lorsqu'une fonction différente se produit.IPhone sdk arrêter l'accéléromètre de travailler quand quelque chose se passe

ici est mon code au moment:

-(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); 

} 

Tout cela fonctionne très bien, je voudrais maintenant arrêter l'accéléromètre de travailler, en utilisant la même méthode

de accelerometerWorks ou une nouvelle méthode, accelerometerWontWork .

C'est le code qui, quand on l'appelle, je voudrais que l'accéléromètre s'arrête. (Il est très long, donc je ne vais pas mettre tous là, mais son tout de même tout au long):

-(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); 
    } 
} 
} 

Je comprends que je dois en faire un BOOL. C'est très bien.

Si je ne l'ai pas bien expliqué s'il vous plaît dites et je vais le réécrire.

Merci! Harry.

+0

Bump, quelqu'un s'il vous plaît? – Harry

Répondre

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

qui vous empêchera de recevoir des événements. Puis définissez-vous en tant que délégué lorsque vous souhaitez recommencer.

+0

MERCI! Fonctionne comme un charme. Vraiment pas assez merci! Ledgend :) – Harry

+0

@Spyker: Merci cela a fonctionné pour moi :) +1! –