2011-01-14 5 views
0

Ich habe eine Shake-Anwendung in iPhone erstellt, aber ich habe ein Problem. Ich will, dass, wenn ich mein Iphone jedes Mal schütteln ein Bild für jeden Shake erscheinen sollte. Kann jemand helfen, wie es möglich ist. Dies ist der Code, den ich geschrieben habe:wie man ein Bild erscheint jedes Mal, wenn ich mein Iphone schütteln

CGRect myImageRect = CGRectMake(110.0f, 70.0f, 220.0f, 380.0f); 
//This line is for setting my tick.png image on my image view 
    UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect]; 
      [myImage setImage:[UIImage imageNamed:@"tick_mark.png"]]; 
     [self.view addSubview:myImage]; 

      //animation 
     [UIView beginAnimations:nil context:nil]; 
      [UIView setAnimationDuration:1]; 
       [myImage setAlpha:0.0]; 
      [UIView commitAnimations]; 

     [myImage release]; 

Dies ist für Animationen beginnen, und ich habe mein Bild Alpha auf 0.0 gesetzt, so dass mein Bild verschwinden. Dieser Code funktioniert ordnungsgemäß. Aber ich will es so, dass, wenn ich mein iPhone wieder schüttele, mein Bild für jeden Shake wieder erscheinen soll. Wie ist es möglich.

+0

pls Ihr Code korrekt formatiert werden. es ist schwer zu lesen – Robin

+0

.. hast du den Code versucht? – Aditya

Antwort

0

Ich schlage vor, Sie UIAccelerometer für diesen Zweck zu verwenden, verwenden Sie den folgenden Code

@interface PageLoopViewController : UIViewController<UIAccelerometerDelegate> { 
UIAccelerationValue myAccelerometer[3]; 
} 
******************* .m code********************* 

#define kAccelerometerFrequency 10 //Hz 
#define kFilteringFactor  0.5 
#define kEraseAccelerationThreshold 0.2 

-(void)viewDidLoad{ 
[[UIAccelerometer sharedAccelerometer] setDelegate:self]; 


[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.30/kAccelerometerFrequency)]; 

} 

- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration 
{ 
UIAccelerationValue length, x, y,z; 


//Use a basic high-pass filter to remove the influence of the gravity 
myAccelerometer[0] = acceleration.x * kFilteringFactor + myAccelerometer[0] * (1.0 - kFilteringFactor); 
myAccelerometer[1] = acceleration.y * kFilteringFactor + myAccelerometer[1] * (1.0 - kFilteringFactor); 
myAccelerometer[2] = acceleration.z * kFilteringFactor + myAccelerometer[2] * (1.0 - kFilteringFactor); 
// Compute values for the three axes of the acceleromater 
x = acceleration.x - myAccelerometer[0]; 
y = acceleration.y - myAccelerometer[1]; 
z = acceleration.z - myAccelerometer[2]; 

//Compute the intensity of the current acceleration 
length = sqrt(x * x + y * y + z * z); 
if(length > kEraseAccelerationThreshold) 
{ 
    //Image code    

} 

} 

Prost

+0

Hallo, ich versuche, aber es funktioniert nicht richtig es gibt mir einen Fehler, der ungültige binäre Operator, wo ich Werte mit Addition und Subtraktion berechnen, d. H. + Und -. Bitte helfen Sie mir bei der Lösung dieses Problems – Rocky

+0

Wo ist der genaue Punkt des Fehlers? – Aditya

+0

myAccelerometer [0] = Beschleunigung.x * kFilteringFactor + myAccelerometer [0] * (1.0 - kFilteringFactor); myAccelerometer [1] = Beschleunigung.y * kFilteringFactor + myAccelerometer [1] * (1.0 - kFilteringFactor); myAccelerometer [2] = Beschleunigung.z * kFilteringFactor + myAccelerometer [2] * (1.0 - kFilteringFactor); 1. Ich habe einen Fehler, dass myAccelerometer nicht deklariert ist, als ich erstellt myAcclelometer erstellt und nach 1 bekam eine in den obigen drei Zeilen, die ungültige binäre Operatoren. Ich denke, in objective-c (+) und (-) Operatoren werden nicht verwendet. Bitte helfen Sie mir, wie Sie das Problem lösen – Rocky

Verwandte Themen