Cocoa控件来渲染tile图

时间:2011-07-11 05:06:57

标签: cocoa macos

是否有任何Cocoa控件能够绘制具有多个图层和多个纹理源的图块地图,这些纹理源也可以拦截触摸到单个图块?拥有多层支持不是一个真正的要求,而是一个可选功能(视图仍然可以堆叠)。根本不需要硬件加速。

到目前为止,我已经玩弄了NSMatrixIKImageBrowserNSCollectionView,但他们认为这不是解决问题的好办法。理想情况下,我需要一个类似于Tiled.app中的控件的控件。有什么东西,第三方或内置的,还是我必须手工制作这种控制?

3 个答案:

答案 0 :(得分:1)

我担心你很难找到一个随时可用的控件来管理瓷砖地图。

如果我必须自己实现类似的东西,我会考虑使用CATiledLayer,因为这是我所知道的最接近瓷砖地图控件的东西。

来自CATiledLayer Reference

  

CATiledLayer是CALayer的一个子类,它提供了一种异步提供图层内容图块的方法,可能会在多个详细级别进行缓存。

nice sample by Bill Dudney(“MacOS和iPhone的核心动画”一书的作者)。此示例可为您自己的项目提供坚实的基础,但它只显示一个PDF,允许您放大您单击的区域(这需要重新读取不同细节级别的图块)。

可以找到另一个有趣的介绍here。这是一步一步的,所以你可以从这开始。

最后,在Cocoa is my Girlfriend上有一篇很好的文章,虽然它专注于iOS,但你可能会发现它无关紧要。

答案 1 :(得分:1)

Cocos2D现在支持构建mac应用程序

关于cocos2d的文章陈述:http://www.cocos2d-iphone.org/archives/1444

Aee在这里如何做到:http://chris-fletcher.com/tag/cocos2d-os-x/

Aee在这里介绍如何使用TMX平铺地图和Cocos2D来构建基于图块的地图:http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:tiled_maps

这意味着您可以使用Cocos2d的强大功能,您必须编写更少的代码才能使用基于图块的地图到达您想要的位置。

如果您不想使用Cocos2D:

似乎你必须自己编写代码,但这不应该太难。

首先,您可以使用磁贴编辑器“Tiled.app”创建.TMX文件,然后您需要使用Cocoa的标准xml库来解析XML。

要布置切片,请使用UIView作为整个容器,然后创建一个tile类,用于保存切片显示信息并响应切片类应扩展UIView的点击。对于tile类,允许分配单击委托并将ViewController指定为所有tile的click委托,这样您就可以轻松处理点击,并将点击的tile传递给您。

循环遍历您的xml数据,并使用切片宽度/高度和您的tilemaps行/列在整个UIView中创建和定位切片。

我认为在大约一天或两天内你可以使用标准的TMX格式渲染和点击瓷砖地图,这样你就可以在“Tiled.app”中编辑你的地图了

此处介绍了TMX标准:https://github.com/bjorn/tiled/wiki/TMX-Map-Format

答案 2 :(得分:-2)

route-me可能适合该法案。