2014-12-26 4 views
1

Название вопроса действительно говорит обо всем. Я пытаюсь связать элементы AppKit, такие как кнопки и другие элементы управления, в игру OS X SpriteKit. Я понимаю, что элементы AppKit можно разместить поверх SKScenes, но как это работает? Будет ли это обрабатываться через NSView? Как создать слой в SpriteKit или это отдельный процесс?Создание элементов AppKit в игре SpriteKit

ответ

0

Все элементы AppKit UI являются подклассами NSResponder и большинство из них подклассы NSView

Это означает, что, как и любой другой какао приложение, у вас есть очень много тот же ответчик цепи.

SpriteKit добавляет подклассы NSResponder на основе SKNode, и все они живут в SKView.

Вместе в одном окне все будет иметь одно и то же окно в цепочке ответчиков. Даже если элементы управления и представления находятся в отдельном окне или в меню в строке меню, все разделяет цепочку ответчиков. На некотором уровне к NSApplication.

Что вы действительно хотите сделать, это определить лучший пользовательский интерфейс. Но любой подкласс NSResponder может пересылать сообщения по цепочке. Пока это сообщение обрабатывается в цепочке, оно будет работать.

Это позволяет вам настроить методы IBAction в вашем делете делегата или оконном контроллере или даже контроллере представления и назначить эти селекторы методов как действия элементов управления. Цепочка-ответчик и что-то называемое nil-target messaging - это одни из самых фундаментальных и мощных шаблонов проектирования в Cocoa, которые поддерживаются природой Objective-C. Проведите некоторое время с документами Apple в цепочке ответчиков. Затем подумайте о простых приложениях с помощью кнопки или слайдера. Примените то же к своей игре.

+0

Извините, но я не знаю, когда дело доходит до этого. Я понимаю эту концепцию на высоком уровне, но не на уровне кода. Я не могу просто создать NSButton, например, и добавить его в качестве ребенка в свой SKScene? Пример кода был бы очень полезен. – 02fentym

+0

№. Только SKNodes могут быть детьми SKNodes. Skscene - это SKNode. SKView - это специальный подкласс NSView, который немного знает о SKNodes. Вы всегда можете поместить представление в представление. – uchuugaka

+0

Да, вот что я подумал. Программно, как бы я мог поместить представление (NSView?) Внутри SKView? – 02fentym

Смежные вопросы