2010-06-24 3 views
0

Je travaille sur une application basée sur l'accéléromètre.comment relier la zone dans l'accéléromètre?

J'ai une boule qui se déplace sur la base de l'accéléromètre.

j'ai essayé de délimiter la zone de balle dans environ 320 par 480.

mais lorsque la balle atteint l'un des coins, le ballon hors de la zone délimitée et se disparaît, et vient à nouveau de partout.

Je n'ai aucune idée de ce que je fais mal.

est ici le code i m en utilisant

static inline BOOL bounce(float* val, float* delta, float min, float max) { 
#define FLIP(val, c) (c - (val - c)) 
    if (*val < min || *val > max) { 
     *delta = -(*delta * 0.00); 
     float loc = *val < min ? min : max; 
     *val = FLIP(*val, loc); 
     return YES; 
    } 
    return NO; 
} 


-(void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration; 
{ 

    #define CAP(val, max) (val < -max ? -max : (val > max ? max : val)) 
    CGPoint delta = CGPointMake(CAP(self.delta.x + acceleration.x, 1.5),CAP(self.delta.y - acceleration.y, 1.5)); 
    CGPoint location = CGPointMake(self.location.x + delta.x, self.location.y + delta.y); 
    if (fabsf(acceleration.x) > kAccelerationThreshold || fabsf(acceleration.y) > kAccelerationThreshold || fabsf(acceleration.z) > kAccelerationThreshold) 
    { 
    } 
    if (bounce(&location.x, &delta.x,20, self.view.bounds.size.width - 25) || bounce(&location.y, &delta.y,20, self.view.bounds.size.height - 20)) 
    {//25, 20 
     AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); 
    }  
    self.delta = delta; 
    self.location = location; 
    self.ballView.center = self.location; 
} 

waiitng de réponse concernant

+0

de toute façon désolé pour la question .. non formatée – iscavengers

Répondre

0

Résolu.

pris 2 valeurs int et bornées x entre 0 et 320 et y dans entre 0 et 480.

merci

Questions connexes