在Xcode中使用纹理图集而不使用cocos2d

时间:2012-07-04 13:47:02

标签: objective-c ios ipad animation sprite

继续这个问题:

How should I go about animating over 200 images in iOS?

我想知道如何在Xcode中使用纹理图集,但不知道如何在cocos2d中使用。我已经完成了太多的项目,现在将它移植到cocos2d。这也是唯一具有此数量图像的动画。

那里唯一的教程似乎涉及cocos2d或corona。我已经下载了Zwoptex并且已经打包了我所有的精灵但是,即便如此,我也不确定我是否应该修剪它们,允许旋转,给它们填充,甚至我如何处理我的视网膜图像。

我一直在关注这个链接:http://mysterycoconut.com/blog/2011/01/cag1/从我上一个问题的推荐给我,但它似乎掩盖了我正在努力的许多部分。

我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:1)

纹理图集旨在与Cocos2D一起运行,与其他组件有很多依赖关系。所以我认为这对你来说不是一个好选择。

你发布的教程不错。它可能最容易使用,但它提供了一个非常好的切入点。此代码的主要部分是- display- (void)displayLayer:方法:

当图层需要其内容时,显示方法是调用。动画将调用(间接)显示方法,在这里我们调用displayLayer,它将更改要显示的图像(我希望我已经清楚了:!)。

如果你想使用非固定大小的zwooptex文件(或其他),你可以在这里重构显示方法:

// Implement displayLayer: on the delegate to override how sample rectangles are calculated; remember to use currentSampleIndex, ignore sampleIndex == 0, and set the layer's bounds
- (void)display;
{
   static const CGRect sampleRects[11] = {
      { 0, 0, 38, 47 },       // run
      { 0, 47, 46, 47 },
      { 82, 0, 40, 47 },
      { 122, 0, 30, 47 },
      { 152, 0, 36, 47 },
      { 38, 0, 44, 47 },
      { 188, 0, 42, 47 },
      { 230, 0, 26, 47 },
      { 46, 47, 28, 47 },
      { 74, 47, 28, 47 },
      { 102, 47, 28, 47 },
   };

   unsigned int idx = [self currentSampleIndex];
   if (idx == 0)
      return;

   self.bounds = CGRectMake(0, 0, sampleRects[idx-1].size.width, sampleRects[idx-1].size.height);
   self.contentsRect = CGRectMake(sampleRects[idx-1].origin.x/256.0f, sampleRects[idx-1].origin.y/128.0f, sampleRects[idx-1].size.width/256.0f, sampleRects[idx-1].size.height/128.0f);
}

@end 

如果您有任何疑问,请不要犹豫。 ;)