Cocoa控件以渲染平铺贴图

Cocoa控件以渲染平铺贴图,cocoa,macos,Cocoa,Macos,是否有任何Cocoa控件能够绘制具有多个图层和多个纹理源的瓷砖贴图,这些贴图也可以截取单个瓷砖的触摸?拥有多层支持不是真正的需求,而是可选功能(视图仍然可以堆叠)。根本不需要硬件加速 到目前为止,我一直在玩弄NSMatrix、IKImageBrowser和NSCollectionView,但没有一个能很好地解决这个问题。理想情况下,我需要一个类似于中的控件。是否有任何第三方或内置控件,或者我必须手工制作此控件?可能符合要求。我担心您将很难找到用于管理平铺贴图的现成控件 如果我必须自己实现这样的事

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


到目前为止,我一直在玩弄
NSMatrix
IKImageBrowser
NSCollectionView
,但没有一个能很好地解决这个问题。理想情况下,我需要一个类似于中的控件。是否有任何第三方或内置控件,或者我必须手工制作此控件?

可能符合要求。

我担心您将很难找到用于管理平铺贴图的现成控件

如果我必须自己实现这样的事情,我会考虑使用<代码> cTieleLead < /C>,因为这是我知道的最贴近的瓦片映射控件。

发件人:

CATiledLayer是CALayer的一个子类,它提供了一种异步提供层内容平铺的方法,可以在多个细节级别进行缓存

有一位是(MacOS和iPhone核心动画的作者)。这个示例可以为你自己的项目提供一个坚实的基础,尽管它只显示一个PDF,允许你放大你点击的区域(这需要重读瓦片在不同的细节级别)。 另一个有趣的介绍可以找到。这是一步一步的,所以你可以从这个开始


最后,还有一篇很好的文章,虽然它关注的是iOS,但您可能会发现它与之相关。

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

cocos2d上的文章指出:

Aee在此了解如何操作:

Aee在此介绍如何将TMX平铺贴图与Cocos2D结合使用,以构建基于平铺的贴图:

这意味着您可以使用Cocos2d的强大功能,并且使用基于平铺的贴图,您需要编写更少的代码才能到达所需的位置

如果不想使用Cocos2D:

看起来您必须自己编写代码,但这应该不会太难

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

要布置平铺,请使用整个容器的UIView,然后创建一个平铺类,该类保存平铺显示信息并响应单击,平铺类应扩展UIView。对于tile类,允许指定单击代理,并将ViewController指定为所有tile的单击代理,以便在将单击的tile传递给您时轻松处理单击

循环浏览xml数据,并使用tiles宽度/高度和tilemaps行/列在整个UIView中创建和定位tile

我想在大约一两天内,你可以使用标准的TMX格式来渲染和单击平铺地图,这将允许你在“Tiled.app”中编辑地图


这里介绍了TMX标准:

对不起,我正在寻找Mac OS X控件。您甚至没有看源代码,是吗..:(更重要的是,该库提供了相当通用的代码,完全符合您的需要。它不仅限于iOS。我想您可以把马引向水边。我确实研究了代码。但我能找到的只是与iOS相关的东西和目标,与OS X无关。但我会再看一次。我仍然找不到任何与OS X相关的东西,但很多iOS e额外的东西。我遗漏了什么吗?对不起,Tiled.app只是一个例子,控件应该是什么样子,我需要的比tmx格式涵盖的内容多一点。tmx格式非常健壮,因为它涵盖了具有无限贴图层的平铺贴图。根据创建者的描述:tmx(平铺贴图XML)“平铺”使用的地图格式是描述基于平铺的地图的一种灵活方式。它可以描述具有任何平铺大小、任意层数、任意数量的平铺集的地图,并且允许在大多数元素上设置自定义属性。除了平铺层外,它还可以包含可以自由放置的对象组。@zachzum:是的,我知道格式,因此我导入了它不久前我就实现了它,但我需要一些更为定制的东西。我理解。这太糟糕了,我无能为力。我接受了CATiledLayer方法,因为它比使用Cocos2d进行渲染更简单。Cocos2d对于这个项目来说太过分了,但感谢你让我关注mac端口,我没有意识到这一点直到今天!感谢您的链接,我将使用CATiledLayer进行我自己的实现。作为记录:我最终编写了我自己的类似NSCollectionView的类,该类使用视图渲染地图,但只创建填充屏幕所需的视图: