2010-10-04 2 views
1

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

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

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

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

Может ли кто-нибудь разъяснить и объяснить?

ответ

1

У меня была аналогичная проблема с оберткой. Одна из проблем заключается в том, что оболочка привязывает представление к корневому окну вместо представления 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

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

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.

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