xcode

2011-12-11 2 views
0

의 UIImage에 대한 여러 이미지간에 변경이 앱에서 작동하고 있으며 여기에서 사용할 수있는 질문을 연구하고 있지만 내 문제를 해결하기 위해 비슷한 것을 찾지는 못했습니다.xcode

4 개의 이미지가있는 어레이 설정이 있는데 이미지가 순차적으로 터치 될 때마다 다른 이미지로 변경하려고 시도하고 마지막 이미지가 표시된 후 다시 첫 번째로 변경하려고합니다.

예 : image1에 "터치"=> IMAGE2 "터치"=> 이미지 3 "터치"이미지 4 "터치"=> image1에 .....

"터치"않는 화상이 변화하지 않을 것이다. 나는 성공적으로 다음 코드를 사용하여 두 이미지 사이를 전환 할 수있어, 그런

imageView.image = [imageArray objectAtIndex:0]; 

: 나는 다음에 첫 번째 이미지를 표시

-(void) viewDidLoad { 
     imageArray = [[NSArray alloc] initWithObjects: 
         [UIImage imageNamed:@"image1.png"], 
         [UIImage imageNamed:@"image2.png"], 
         [UIImage imageNamed:@"image3.png"], 
         [UIImage imageNamed:@"image4.png"], 
         nil]; 

:

내 배열 설정과 같다 :

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
     UITouch *touch = [[event allTouches] anyObject]; 
     NSLog(@"'Touches Began"); 

     if ([touch view] == imageView) { 
      imageView.image = [imageArray objectAtIndex:1]; 
      NSLog(@"Image touched and changed"); 
     } 

이제 imageView 디스플레이에 두 가지 이상의 변경 사항을 표시하려고 했으므로 행운와 루프에 대한 내부 문 경우 : 실행하면

int touchCount = 0; 
    for (touchCount = 1; touchCount < 4; touchCount++) { 
     if ((touchCount < 4) && ([touch view] == imageView)) { 
      imageView.image = [imageArray objectAtIndex:touchCount]; 
      NSLog(@"Touch Count = %d", touchCount); 
     } 
    } 

, 디버거는 "터치 카운트 = 0"을 표시 한 후 바로 충돌하고 다시 홈 화면으로 종료합니다. 아무도이 문제에 도움을받을 수 있습니까? 내 개념이 틀렸어?

+0

때를 충돌? – CristiC

+0

for 루프가 충돌하지 않으면 각 이미지가 연속해서 빠르게 표시됩니다. 적은 수의 이미지를 통해 회전한다는 것은 루핑 구문에 대한 호출이 아닙니다. 이것은 단순히 어떤 이미지가 다음에 올지를 유지하는 것입니다. 임의의 숫자 생성기를 사용하여 알고리즘을 선택하거나 다른 알고리즘을 사용할 수 있습니다. 코드에서 수행해야 할 작업은 다음에 어떤 이미지를 표시해야할지 결정하고 이미지를 넘겨야합니다. JRTurton은 회전 알고리즘에 대한 좋은 대답을 제공합니다. –

답변

1

어떤 이미지가 표시되는지를 저장하는 인스턴스 변수로 정수를 갖습니다. viewDidLoad에서이 값을 0으로 설정합니다.

터치가 이미지보기에 등록되면 정수를 증가시킵니다. 값이 이미지 배열의 수를 동일한 경우, 정수 값이 나타내는 이미지 배열의 요소에 이미지를 설정 0

로 다시 설정 : 로그는 무엇을 말하는

// touch registered on image 
currentImage++; 
if (currentImage == [imageArray count]) 
    currentImage = 0; 

imageView.image = [imageArray objectAtIndex:currentImage]; 
+0

도움을 주신 모든 분들께 감사드립니다! 그것은 위대한 지금 작동합니다. 나는 엑스 코드 자체가 트리거가 될 때까지 이미 루프 방식으로 실행되고 있다는 것을 잊어서 연속을 촉진하기 위해 어떤 종류의 루프가 필요하다는 인상을 받았다. 또한, 먼저 "NSInteger * touchCount"를 사용하여 touchCount를 초기화하고 충돌을 계속합니다. 나는 보통의 정수 대신에 "포인터"로 취급했다. "*"를 취하는 것은 모든 것이 이제는 정규 정수처럼 해결되도록합니다. 나는 멍청한 놈이다 !! 나보다 앞서 많은 일이 아직도있다. – wahfue

+0

위의 주석에 "NSInteger touchCount"를 넣으려고했습니다. – wahfue