2014-05-20 39 views
2

大家好,我正在實施基於加速度計的擺動動畫。 但它給了奇怪的行爲。下面是我的代碼。 請幫我找到我錯在哪裏。如何在ios中實現基於加速度計的擺動動畫

#import "DemoViewController.h" 

@interface DemoViewController() 

@end 

@implementation DemoViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    UIAccelerometer* theAccel=[UIAccelerometer sharedAccelerometer]; 
    theAccel.updateInterval=1/50.0f; 
    theAccel.delegate=self; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{ 
    CGFloat x= acceleration.x; 
    self.imPendulum.transform=CGAffineTransformRotate(self.imPendulum.transform,-x); 
} 
@end 
+0

你的奇怪行爲是什麼? – Larme

+0

它旋轉不正常或光滑。但它在混亂中旋轉。速度太快。 –

+0

這裏是視頻的鏈接 https://www.youtube.com/watch?v=PROZ9THzbTY –

回答

1

那麼,首先,你需要創建一個定位點,以便擺動的支點在哪裏,所以它擺動而不是旋轉。

試試看。然後,我想你需要創建一個係數(或更細微的公式)來將acceleration.x轉換爲CGFloat x。

也許最重要的是,你在這裏沒有動畫,你正在進行轉換,這是非常不同的。它只是將一個項目移動到一個新的位置,它不會輕輕地從A點移動到B點。爲此,您需要將變換放入動畫塊中。

如果你嘗試了上述3件事,你應該是熱點,然後它只是細節。