2012-02-27 1 views
1

이것이 웹 프로그래밍으로 수행된다는 것을 알고 있습니다. xcode 및 obj-c 와도 가능합니까? 단추의 두 인스턴스 (정상 및 클릭)가있는 스프라이트 시트가 있습니다. obj-c에서 click 함수를 사용할 수 있지만 하나의 스프라이트 시트를 가져 와서 스프라이트 시트의 일부를 잘라내어 (웹 사이트와 같이) 하나의 스프라이트 시트에서 이미지의 원하는 부분을자를 수 있습니까? 그렇다면 필요한 기능은 무엇이며 어떤 점을 지적 해 주시겠습니까?xcode 및 스프라이트 시트, 다중 이미지가 한 시트에있을 때 이미지 자르기 방법

+0

스프라이트를 어떻게 표시 할 계획입니까? 'UIImageView','CALayer' 또는 다른 것을 사용하고 있습니까? – dasblinkenlight

+0

UIImageView, 가능하면 더 좋은 솔루션이라면 다른 아이디어에 대해서 열기 –

답변

0

을 사용할 수 있습니다.이 값은 UIImageView보다 가벼우 며 사용하기가 매우 쉽습니다. 이 아이디어는 this post의 예제를 기반으로하며 작업중인 프로젝트에서 제외되었습니다.

// "sprites.png" is a 192x128 picture containing two rows of three 64x64 sprites each 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"sprites.png" ofType:nil]; 
    CGImageRef img = [UIImage imageWithContentsOfFile:path].CGImage; 
    imgLayer = [CALayer layer]; 
    imgLayer.contents = (__bridge id)img; 
    // Frame defines the position of your sprite inside your view 
    imgLayer.frame = CGRectMake(horOffset, verOffset, 64, 64); 
    imgLayer.bounds = CGRectMake(0, 0, 64, 64); // The size of an individual sprite 
    // Pick the sprite from the top row, left column 
    imgLayer.contentsRect = CGRectMake(0, 0, 1.0/3.0, 1.0/2.0); 
    // Top row, middle column 
    // imgLayer.contentsRect = CGRectMake(1.0/3, 0, 1.0/3.0, 1.0/2.0); 
    // Top row, right column 
    // imgLayer.contentsRect = CGRectMake(2.0/3, 0, 1.0/3.0, 1.0/2.0); 
    // Bottom row, left column 
    // imgLayer.contentsRect = CGRectMake(0, 1.0/2, 1.0/3.0, 1.0/2.0); 
    // Bottom row, middle column 
    // imgLayer.contentsRect = CGRectMake(1.0/3, 1.0/2, 1.0/3.0, 1.0/2.0); 
    // Bottom row, right column 
    // imgLayer.contentsRect = CGRectMake(2.0/3, 1.0/2, 1.0/3.0, 1.0/2.0); 
    [self.layer addSublayer:imgLayer]; 
+0

당신은이 코드로 인해 많은 고통을 느끼게합니다. 'imgLayer.contentsRect'는'64,64'가되어서는 안됩니다. '1,1'이되어야합니다. 더 자세히 살펴보면 예제 링크의 코드가 작동합니다. –

+0

@ LéMuffinManm 대단히 감사합니다. 면밀히 조사하자면'bounds '대신 한 번,'right spot '에 한 번'contentRect'를 두 번 복사/붙인 것을 알았습니다. 이 문제가 해결되었습니다. 감사! – dasblinkenlight

+0

고마워, 나는 그것을 작동하게했다. 그러나 나는 와아, 말해야한다! 이것은 내 머리를 감쌀 수밖에 없었습니다. –