gpt4 book ai didi

cocoa :删除 NSView

转载 作者:行者123 更新时间:2023-12-03 18:02:16 26 4
gpt4 key购买 nike

我正在做学习练习,同时为我的 child 制作一个游戏。他有一款纸牌游戏(比如《口袋妖怪》),我们扫描了一堆纸牌游戏,并试图制作一款他可以与“电脑”对战的游戏。所以游戏过程是你需要从选择你的牌开始。我所做的是有一个类(Card(NSView 的子类),它由 IBOutlet(按钮)实例化,并在屏幕上放置第一张卡以及滚动按钮 - 每次单击滚动按钮时,它都会确定要执行的操作下一张卡应该是,然后调用一个方法(makeCard),该方法也实例化一个新卡。

我对 cocoa 在这里做什么很模糊。 Card 基本上在其 drawRect 中调用了纹理图集,并且我传入要显示的当前卡的坐标。这意味着每次我实例化 Card 时都会创建一个新的 NSView,对吗?我本质上是在我的应用程序中构建一堆 NSView(因为每张卡的 x、y、w h)是相同的,我无法分辨,但这似乎在逻辑上正在发生什么。它不会对应用程序速度产生影响,但看起来像是不必要的困惑。

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

需要明确的是,我不再需要卡片的视觉表示。游戏的设置部分非常美观,因为所有卡牌数据(包括纹理图集坐标)都存储在字典中。

另外,由于我在这里提出问题,如果没有 NSImage,我如何能够缩放纹理图集中的图像。它们的尺寸均为 180x250 像素,但将来它们将出​​现在等待区域中,我希望它们不能是这个尺寸。

最佳答案

回答你的部分问题,因为我无法弄清楚其余部分:

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

关于 cocoa :删除 NSView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5211929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com