Я использую акселерометр для перемещения нескольких UIImageViews
по экрану, в данный момент акселерометр работает только тогда, когда NSTimer
равен 0, это нормально. Я также хотел бы сделать остановку акселерометра снова, когда происходит другая функция.
вот мой код на данный момент:
-(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 или новый метод, акселерометрWontWork.
Это код, который, когда он вызывается, я бы хотел, чтобы акселерометр остановился. (это очень долго, поэтому я не буду помещать все это туда, но все равно везде):
-(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
. Это хорошо.
Если я не объяснил это хорошо, пожалуйста, скажите, и я напишу это.
Спасибо!
Гарри.