INSpriterKit 1.0.1

INSpriterKit 1.0.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

Sven Korset维护。



 
依赖
INLib~> 2.1
INSpriteKit~> 1.1
RaptureXML~> 1.0
 

  • Sven Korset

INSpriterKit为Brashmonkey.com的动画工具"Spriter"增加了Sprite Kit支持。

警告:这个库可能不会更新!

要求

iOS 7+或OS X 10.9+,启用ARC

需要以下框架

  • SpriteKit
  • GLKit

需要以下库(当使用CocoaPods时将自动安装)

  • 'INLib' v2.1
  • 'INSpriteKit' v1.1
  • 'RaptureXML' v1.0

与Spriter b8_2(v0.8.2测试版)导出的文件进行了测试。

安装

或手动克隆仓库,将INSpriterKit目录添加到您的项目中,并将要求部分中提到的必要框架和库添加到项目中。

包含INSpriterKit.h头文件以获取对引擎的访问权限。

使用

首先使用具体的解析器子类如INSKScmlParser解析一个Spriter文件。

INSKScmlParser *scmlParser = [[INSKScmlParser alloc] init];
[scmlParser parseFilename:@"BasicTests"];

然后在您的游戏场景中创建一个INSKAnimationManager,使用解析器返回的动画模型。管理器需要一个能够加载并返回用于绘制动画对象所需的SKTexture对象的纹理加载器。实现INSKAMTextureLoader协议并在创建管理器时注册代理。

self.animationManager = [[INSKAnimationManager alloc] initWithAnimationData:[scmlParser animationData] textureLoader:self];

纹理加载器仅实现如下的方法,但也许还应该实现预加载或缓存。

- (SKTexture *)textureNamed:(NSString *)textureName path:(NSString *)path {
    return [SKTexture textureWithImageNamed:textureName];
}

保持管理器的一个实例,并在每一帧处理其更新方法,通常是在场景的更新方法中调用它。

- (void)update:(NSTimeInterval)currentTime {
    [self.animationManager update:currentTime];
}

设置好管理器后可以创建动画节点,这些节点是SKNode实例,用于显示实体的动画。

INSKAnimationNode *animationNode = [INSKAnimationNode node];
[animationNode loadEntity:@"TestEntity" fromManager:animationManager];
[scene addChild:animationNode];

可选地实现一些INSKAnimationNodeDelegate代理方法,并在动画节点上注册,以便在动画结束时获得通知。

animationNode.animationNodeDelegate = self;

为注册的实体开始播放动画。

[animationNode playAnimation:@"AnimationName"];

这就是现在所有的事情,享受乐趣吧!

示例

有一个用于测试的INSpriterKitExample项目。首先转到项目的文件夹,在终端中运行pod install(要求安装CocoaPods)。然后使用Xcode打开 workspace 文件 INSpriterKitExample.xcworkspace 并运行示例应用。

大部分示例场景都在加载 BasicTests.scml Spriter 文件,并使用存放在 Assets 文件夹中的 GreyGuy 资产。用 Spriter 打开 scml 文件,并在应用内比较其中的动画。

缺陷

目前支持简单精灵与非缩放骨骼的动画,但在缩放骨骼方面存在差异。如果骨骼在关键帧之间缩放,动画将会中断。

在此库中未使用 Spriter 的 Z-顺序,需要添加。

仅支持线性插值,不支持其他缓动。Character maps、边界框、动作点以及 Spriter 支持的其他功能在此绑定中也没有实现。

应该有一个可能,将自定义的 SKNodes 或其他动画节点添加到动画中,例如,将 Spriter 动画作为太空船的路径,但此动画中的太空船只是为了实际太空船、敌人或其他用另一个实体及其动画表示的东西留出的占位符。

版本

变更日志

由于时间和个人对这个库的需求,它可能不会更新,至少在短期内不会更新。由于存在骨缩放问题以及缺少 Z-顺序,这样的库不应在生产环境中使用。因此,它是一个开源基础,用于扩展,只需克隆 GitHub 仓库,就可以开始动手。抱歉,但您将独立解决错误并实现附加功能。然而,项目中包含少量技术文档,以熟悉代码库。

许可

INSpriterKit 采用 MIT 许可协议。有关更多信息,请参阅 LICENSE 文件。

示例项目中 'GreyGuy' 资产受 BrashMonkey LLC 专有使用权的约束,请在文件夹中的 版权说明文件 中查阅。