2013-10-12 82 views
1

我正在使用加速度计在屏幕上移动图像(直升机)。我试图添加代码,所以当直升机向前移动时,它将图像视图旋转20度,当直升机向后移动时,它将图像视图旋转-20度,这个想法是为了创造直升机移动更逼真的效果。然而,当应用旋转时,uiimageview会移回原始起始位置(我将它放在故事吟游诗人的位置)。任何想法为什么?下面的代码:旋转uiimageview将图像移回原始故事板位置

-(void)outputAccelerationData:(CMAcceleration)acceleration 

{ 
if (helicoptervalueX>1.5){ 
    helicopterrotation = 1; 
    helicopter.transform = CGAffineTransformRotate(CGAffineTransformIdentity,0.34906585); 
    NSLog(@"Tilt forward"); 
} else if (helicoptervalueX < -1.5){ 
    helicopterrotation = -1; 
    helicopter.transform = CGAffineTransformRotate(CGAffineTransformIdentity, -0.34906585);  
    NSLog(@"Tilt backward");} 
else if (helicoptervalueX<=1.5 && helicoptervalueX>=-1.5){ 
    helicopterrotation = 0; 
    helicopter.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 0); 
    NSLog(@"Helicopter flat");} 




helicoptervalueX = -(acceleration.y*50.0)+calibrationx; 
helicoptervalueY = (acceleration.x*50.0)+calibrationy; 



int helicopternewX = (int)(helicopter.center.x + helicoptervalueX); 

if (helicopternewX > 518) { 
    helicopternewX = 518;} 

if (helicopternewX < 50){ 
    helicopternewX = 50;} 

int helicopternewY = (int)(helicopter.center.y - helicoptervalueY); 

if (helicopternewY > 295){ 
    helicopternewY = 295;} 


if (helicopternewY < 25){ 
    helicopternewY = 25;} 

CGPoint helicopternewCenter = CGPointMake(helicopternewX, helicopternewY); 

helicopter.center = helicopternewCenter; 

}

回答

0

你试试这个?为了保持在它的上面现有的变换和运用旋转:

helicopter.transform = CGAffineTransformRotate([helicopter transform],angle); 

然后回去水平,你可能会应用负角度:

helicopter.transform = CGAffineTransformRotate([helicopter transform], -angle); 
相关问题