2013-02-03 2 views
1

나는 아래 코드를 사용하여 화면에서 "fly"로 만드는 10 개의 반딧불이 있습니다. 코드는 또한 화면에 반딧불이를 유지하는 역할을합니다.이미지가 iOS에서 화면의 가장자리를 칠 때

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

NSArray *blueArray = [NSArray array]; 
blueArray = [[NSArray alloc] initWithObjects: 
      [UIImage imageNamed:@"blue1.png"], 
      [UIImage imageNamed:@"blue2.png"], nil]; 

blue.animationImages = blueArray; 
blue.animationDuration = 0.20; 
blue.animationRepeatCount = -1; 
[blue startAnimating]; 

    bluepos =CGPointMake(2.0, 1.5); 
} 


-(void) someMethod { 
    endingAnimationTimer = [NSTimer scheduledTimerWithTimeInterval:(0.03) target:self selector:@selector(makeFly) userInfo:nil repeats:YES]; 
} 


-(void) makeFly { 

    blue.center = CGPointMake(blue.center.x+bluepos.x, blue.center.y+bluepos.y);{ 
     if(blue.center.x > 480 || blue.center.x <0) 
      bluepos.x = -bluepos.x; 

     if(blue.center.y > 320 || blue.center.y <0) 
      bluepos.y = -bluepos.y; 
    } 
} 

다음은 반딧불는 화면과 화면에 반딧불 이미지 자체를 유지하기 위해 반대 방향의 가장자리를 쳤을 때 그들이 보이는 때문에 여전히 인접 방향을 "직면"된다는 점을 제외하고 잘 작동 "비행" 반 시간 뒤로 비행하고있다.

반딧불이 화면 가장자리에 부딪 칠 때 방향을 바꾸고 이미지 자체가 뒤 바뀌도록 설정하고 싶습니다. 나는이 일 것이라고 생각

@synthesize blueIsFacingRight; 


-(void) makeFly { 

    blue.center = CGPointMake(blue.center.x+bluepos.x, blue.center.y+bluepos.y); { 
     if(blue.center.x > 480) { 
      if (blueIsFacingRight == YES) { 
       blue.transform = CGAffineTransformMakeScale(-1, 1); 
       blueIsFacingRight = NO; 
      } 
      bluepos.x = -bluepos.x; 


     } 

     if(blue.center.x <0) { 
      bluepos.x = -bluepos.x; 

      if (blueIsFacingRight == NO) { 
       blue.transform = CGAffineTransformMakeScale(1, 1); 
       blueIsFacingRight = YES; 
      } 
     } 

     if(blue.center.y > 320) 
      bluepos.y = -bluepos.y; 

     if(blue.center.y <0) 
      bluepos.y = -bluepos.y; 
    } 
} 

하는 .m에서 .H

@property (nonatomic, assign) BOOL blueIsFacingRight; 

에서

하지만이 "벽"에 도달 할 때 이미지가 반전되지 않습니다

나는이 시도

왜이 작동하지 않는 이유와 더 나은 이유가 eff 메신저 찾고있어?

enter image description here

답변

2

당신은 두 경우 모두 -1로 변환 X 값을 설정합니다. 직면 할 때 CGAffineTransformMakeScale (1, 1)과 같이 변형을 설정해야합니다.

blue.center = CGPointMake(blue.center.x+bluepos.x, blue.center.y+bluepos.y); { 
if(blue.center.x > 480) { 
    if (blueIsFacingRight == YES) { 
     blue.transform = CGAffineTransformMakeScale(-1, 1); 
     blueIsFacingRight = NO; 
    } 
    bluepos.x = -bluepos.x; 


} 

if(blue.center.x <0) { 
    bluepos.x = -bluepos.x; 

    if (blueIsFacingRight == NO) { 
     blue.transform = CGAffineTransformMakeScale(1, 1); 
     blueIsFacingRight = YES; 
    } 
} 
+0

당신의 오른쪽, 복사 및 붙여 넣기가 저를 알아 들었습니다. 그러나 문제를 해결하지 못했습니다 고정, 이미지 여전히 변경되지 않습니다 위의 내 편집을 참조하십시오 UIImageView 실제로 이미지의 배열 그래서 그것은 fireflie의 날개가 될 것 같아요 배열 원인 변형 작동하지? – DelightedD0D

0
**blue.transform =CGAffineTransformIdentity;** 

위의 내가 변화에게 메서드가 호출 바로 다음 시간 (0.03 이상)

을 취소 한 있도록 이미지를 역전 된 곳 위에 다른 물건의 무리와 내 makeFly 방법에 있었다

남자 나는 바보라고 느낀다