Какао: удалить NSView - PullRequest
       7

Какао: удалить NSView

0 голосов
/ 06 марта 2011

Я делаю упражнение в обучении и в то же время делаю игру для своего ребенка.У него есть одна из этих карточных игр (например, Pokemon), и мы отсканировали кучу и пытаемся создать игру, в которой он может играть против «компьютера».Итак, игровой процесс нужно начинать с выбора карт.Я создал класс (Card (sub of NSView), который создается с помощью IBOutlet (кнопка) и удаляет первую карту на экране, а также кнопки прокрутки - каждый раз, когда нажимается кнопка прокрутки, он определяет, чтоследующая карта должна быть, а затем вызывает метод (makeCard), который также создает новую карту.

Я не совсем понимаю, что здесь делает какао. В основном, в drawRect есть вызов атласа текстурыЯ передаю координаты текущей карты для отображения. Это означает, что каждый раз, когда я создаю экземпляр Card, создается новый NSView, верно? Я, по сути, создаю стек NSViews в моем приложении (так как x, y, wh)каждая карта одна и та же, я не могу сказать, но это выглядит логично, что происходит. Это не влияет на скорость приложения, но кажется ненужным беспорядком.

Есть ли способ, которым я могу простообновить изображение в одном экземпляре представления вместо создания экземпляра карты для каждого, который я хочу показать? И независимо от этого ответа,Как я могу удалить вид из окна после завершения процесса настройки?[view removeFromSuperview]?

Для ясности, я больше не хочу визуального представления карты.Там просто приятный глаз для настроенной части игры, так как все данные карты (включая координаты текстурного атласа) хранятся в словаре.

Кроме того, поскольку здесь я задаю вопросы, как бы я без NSImage смог масштабировать изображения из текстурного атласа.Они имеют размер 180x250 пикселей, но в будущем они будут представлены в зоне ожидания, и я бы предпочел, чтобы они не были такого размера.

1 Ответ

1 голос
/ 06 марта 2011

Ответ на часть вашего вопроса, так как остальное я не могу понять:

CGImageCreateWithImageInRect позволит вам создать ссылку на часть большего изображения, как в текстурном атласе. Затем вы можете создать NSImage из этого (если вы используете 10.6 или более позднюю версию, с помощью - [NSImage initWIthCGImage: size:] , в противном случае вам нужно сначала создать NSBitmapImageRep ). Затем вы можете отобразить NSImage в ячейке NSTableView, NSCollectionView или NSImageView.

...