首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cocoa:移除NSView

Cocoa:移除NSView
EN

Stack Overflow用户
提问于 2011-03-07 00:59:41
回答 1查看 280关注 0票数 0

我正在做一个学习练习,同时为我的孩子做一个游戏。他有一款纸牌游戏(像精灵宝可梦),我们扫描了一大堆,试图制作一款他可以与“电脑”对战的游戏。所以游戏的过程是你需要从选择你的牌开始。我所做的是有一个类(卡片(NSView的子类),它由一个IBOutlet (按钮)实例化,并将第一张卡片放在屏幕上,以及滚动按钮-每次单击滚动按钮时,它确定下一张卡片应该是什么,然后调用一个方法(makeCard),该方法也实例化一个新的卡片。

我不太清楚可可在这里做什么。卡片基本上在其drawRect中有一个对纹理图集的调用,我传入当前卡片的坐标进行显示。这意味着每次我实例化Card的时候都会生成一个新的NSView,对吗?我基本上是在我的应用程序中构建了一堆NSViews (因为每张卡的x,y,w)是相同的,我不能说,但这似乎是逻辑上正在发生的事情。它不会影响应用程序的速度,但它似乎是不必要的混乱。

有没有一种方法可以让我只在视图的一个实例中更新图像,而不是为我想要显示的每个实例实例化一个Card?不管答案如何,一旦设置过程完成,我如何从窗口中删除视图?查看removeFromSuperview

需要说明的是,我不再需要卡片的可视化表示。因为所有的卡片数据(包括纹理地图集坐标)都存储在一个字典中,所以游戏的设置部分只有一个吸引人的地方。

此外,由于我在这里提出问题,如果没有NSImage,我如何能够缩放纹理图集中的图像。它们每个都是180x250px,但沿着这条路走下去,它们将被放在一个等待区域,我宁愿它们不能是这个大小。

EN

回答 1

Stack Overflow用户

发布于 2011-03-07 01:20:07

回答你的问题的一部分,因为我不能弄明白其余的:

CGImageCreateWithImageInRect将允许您创建对较大图像的一部分的引用,就像在纹理图集中一样。然后,您可以通过它创建一个NSImage (如果您使用的是10.6或更高版本,请使用-[NSImage initWIthCGImage:size:],否则您将需要create a NSBitmapImageRep first)。然后,您可以在NSTableView单元格、NSCollectionView或NSImageView中显示NSImage。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5211929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档