IPhone SDK zastavit akcelerometru z práce, když se něco stane,

hlasů
0

Jsem pomocí akcelerometru pohybovat několik UIImageViewspo obrazovce, v okamžiku, kdy akcelerometr funguje pouze tehdy, když NSTimerje na 0, to je v pořádku. Také bych rád, aby se akcelerometr opět zastaví, když jiná funkce stane.

Zde je můj kód v tomto okamžiku:

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

}

To vše funguje v pořádku, já bych se chtěl zastavit akcelerometru z práce, za použití stejné

Metoda accelerometerWorks nebo nový způsob, accelerometerWontWork.

To je kód, který, když se nazývá bych chtěl akcelerometr zastaví. (To je velmi dlouhá, takže jsem zvyklý dát všechno to tam, ale jeho všechny stejné v celém textu):

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

Chápu, že možná bude muset proměnit tuto BOOL. To je v pořádku.

Mám-li to vysvětlil to dobře prosím říci, a budu znovu psát to.

Dík! Harry.

Položena 02/04/2010 v 12:31
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
7

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

které se zastaví vám příjem událostí. Pak nastavit sami jako delegát, pokud chcete začít znovu.

Odpovězeno 02/04/2010 v 14:06
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more