2012-02-27 52 views
1

我知道這是用web編程完成的,可以用xcode和obj-c來完成嗎?我有一個精靈表和兩個按鈕的實例(正常和點擊)。我知道我可以使用obj-c中的點擊功能,但是我可以導入一個精靈圖紙並裁剪精靈圖紙的一部分(如網站)以在一個精靈圖表中裁剪圖像的所需部分?如果是的話,你需要什麼功能,你有什麼樣的例子,你可以指點我?xcode和sprite工作表,如何在一張工作表中存在多個圖像時裁剪圖像

+0

你打算如何顯示你的精靈?你把它們放在'UIImageView','CALayer'或其他的東西里嗎? – dasblinkenlight 2012-02-27 19:27:13

+0

UIImageView,但打開其他的想法,如果可能更好的解決方案 – 2012-02-27 22:35:50

回答

0

您可以使用CALayer:它比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' ..仔細檢查時,示例鏈接中的代碼有效。 – 2013-11-28 22:11:22

+0

@LéMuffinManm非常感謝您的評論!經過仔細檢查,我意識到我複製/粘貼'contentsRect'兩次 - 一次代替'bounds',一次在正確的位置。這現在已經修復。謝謝! – dasblinkenlight 2013-11-28 23:48:42

+0

謝謝,我明白了,但我必須說,哇!這確實很難把我的頭包裹起來。 – 2013-11-29 02:18:59