проблемы anchorpoint с CCUIViewWrapper - PullRequest
       6

проблемы anchorpoint с CCUIViewWrapper

1 голос
/ 04 октября 2010

У меня возникли проблемы с пониманием и использованием anchorPoint. Насколько я понимаю, якорь по умолчанию - (.5, .5), который применяет преобразования к центру объектов. Однако, когда я поместил UIButton в CCUIViewWrapper, я заметил, что его масштабирование будет масштабироваться примерно на правую сторону объекта (т.е. если я масштабирую от 0 до 1, он будет расти справа налево).

Я не был уверен, что с этим делать, но, повернувшись, обнаружил, что мне пришлось настроить точку привязки на (0,0), чтобы масштабирование происходило вокруг центра объекта. Почему это случилось?

Более того, хотя я ожидаю, что для того, чтобы привязка была внизу слева от объекта, поскольку Cocos2d ориентирована внизу слева для (0,0), он не выровнял top осталось значение позиции моей оболочки.

В конце концов, для масштабирования по центру нужно было создать точку привязки (0,0) и расположить обертку, используя верхний левый угол объекта, почти так, как если бы он использовал координаты UIView для размещения объекта , Я не уверен, происходит ли это поведение строго в оболочках UIViews в CCUIViewWrappers, и при этом я не знаю, является ли это просто правильным поведением, и я совершенно не понимаю его.

Может кто-то уточнить и объяснить?

Ответы [ 2 ]

1 голос
/ 03 июня 2011

У меня была похожая проблема с оберткой. Одна из проблем здесь заключается в том, что оболочка присоединяет представление к корневому окну вместо представления OpenGL директора, что означает, что оно не будет уважать то, что используется в OpenGL. Код выглядит так, как будто он пытается компенсировать разницу между координатами UIView и Cocos2d, но, похоже, не делает это должным образом, когда дело доходит до точек привязки. В итоге я использовал только координаты UIView, но я поэкспериментировал с альтернативным методом установки точки привязки с помощью:

uiItem.center = ccp((self.anchorPoint.x - 0.5f) * self.contentSize.width, (self.anchorPoint.y - 0.5f) * self.contentSize.height);

В начале метода updateUIViewTransform в CCUIViewWrappers перед установкой преобразования представления. Это заставляет точки привязки вести себя как ожидалось, по крайней мере для представлений, прикрепленных непосредственно к слою.

0 голосов
/ 04 ноября 2011

Вместо использования:

uiItem.center = ccp((self.anchorPoint.x - 0.5f) * self.contentSize.width, (self.anchorPoint.y - 0.5f) * self.contentSize.height);

, который устанавливает точку привязки справа внизу, я использовал:

uiItem.center = ccp(-uiItem.bounds.size.height/2, uiItem.bounds.size.width/2);

, которая устанавливает ее в центр.

Причина, по которой x и y перевернуты, наверное, потому, что мой предмет повернут на 90.

...