В чем разница между 'Doc root var' и 'Owner var' в CocosBuilder?

В CocosBuilder есть раздел " Соединения кода ". Во второй строке у него есть три варианта: Не назначать, Doc root var и Owner var.

Иногда я получал сообщение об ошибке, когда выбирал Owner var, но он работает нормально после того, как я изменил его на Doc root var.

Я много гуглю, но не могу найти удовлетворенный ответ.

Кто-нибудь может объяснить разницу ясно?

2 ответа

Решение

Не назначать просто означает, что вы не используете Code Connections.

Doc root var означает, что вы подключаете пользовательский класс cocos2d. Это склеит / соединит объект в вашем документе (этап / файл CCB) с вашим кодом. Эта опция удобна, но вы должны убедиться, что предоставлен объект контроллера корневого узла.

Иногда вам нужно иметь доступ к переменным-членам и получать обратные вызовы к другому объекту, кроме корневого узла ccb-файла. Для этого вам необходимо передать владельца в CCBReader.

как объяснено в Соединении с cocos2d-x.

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

Ошибка, которую вы получаете, скорее всего, вызвана предоставлением имени, которое недоступно (переменная не существует). Обратите внимание, что установка свойства для Doc root var или Owner var и оставление поля пустым вызовет эту ошибку.

При связывании переменных- членов корневая переменная Doc добавит члена в объект контроллера корневого узла. Вы можете получить к нему доступ через MainScene.myVar предполагая, что у вас JS Controller есть MainScene. Это определяется свойством JS Controller корневого слоя сцены.

Кроме того, вы можете сделать то же самое с пользовательским объектом, который не связан напрямую со сценой через соединение JS Controller. Для этого вы должны использовать атрибут Owner var.

Не назначать по умолчанию и ничего не делает.

По сути, эти функции позволяют легко ссылаться на эти объекты CCB из вашего кода.

Эксперименты с примерами игр CocosBuilder JS могут помочь. Документация о том, как подключиться к cocos2d-x, также может быть полезна для вас, если вы еще не читали ее.

Другие вопросы по тегам