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

标签 objective-c ios ipad animation sprite

根据这个问题:

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

我想知道如何在 Xcode 中使用纹理图集,但不能在 cocos2d 中使用。该项目的大部分内容已经完成,我现在无法将其移植到 cocos2d 上。这也将是唯一具有如此数量图像的动画。

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

我一直在查看此链接:http://mysterycoconut.com/blog/2011/01/cag1/正如我上一个问题向我推荐的那样,但它似乎掩盖了我正在努力解决的许多部分。

我非常感谢任何对此的帮助。

最佳答案

纹理图集被设计为与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 

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

关于objective-c - 在 Xcode 中使用纹理图集而不使用 cocos2d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11330372/

相关文章:

iphone - 使用 NSOperationQueue 跟踪下载

iphone - 在类中设置修改标志

ios - BOOL 方法有问题

ios - 在 testflight 上从旧版本更新到新版本时应用程序崩溃

iphone - ipad 应用程序换肤结构/方法?

iphone - 将其存储在手机内存中 - 这可能吗?苹果?

javascript - 如何实现Flash的播放或暂停?

iphone - 内存泄漏问题

iphone - iOS 4 通常向后兼容吗?

ios - UIImagePickerController使iPad上的应用程序崩溃,但iPhone崩溃