2

大家好,我正在实现基于加速度计的钟摆动画。但它给出了奇怪的行为。下面是我的代码。请帮我找出我错的地方。

#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
4

1 回答 1

1

嗯,首先,你需要为你的钟摆的支点创建一个锚点,所以它会摆动而不是旋转。

先试试那个。然后,我想您需要创建一个系数(或更细微的公式)来将Acceleration.x 转换为CGFloat x。

也许最重要的是,您不是在这里制作动画,而是在执行变换,这是非常不同的。它只是将一个项目移动到一个新位置,它不会将它从 A 点轻轻移动到 B 点。为此,您需要将变换放在动画块中。

如果你尝试以上 3 件事,你应该会很热,然后就是细节。

于 2014-05-20T19:32:53.623 回答