Cocos2d — как масштабировать два CNodes относительно друг друга

У меня есть два CNode в Cocos2d, которые я хочу динамически масштабировать синхронно друг с другом. Оба CNodes являются фоновыми узлами. Визуально один CCNode, NodeA, находится над другим CCNode, NodeB в направлении y. Но когда я масштабирую оба узла одновременно, как в приведенном ниже коде:

Редактировать №1 –

Узел B является частью CCLayer, HUDLayer. HUDLayer не масштабируется, но NodeB в HUDLayer масштабируется. Так выглядит код

NodeA.anchorPoint = ccp(0.5f, 0.0f);
NodeA.scale = scale;
HUDLayer.NodeB.anchorPoint = ccp(0.5f, 0.0f);
HUDLayer.NodeB.scale = scale;

4)  Would NodeB being part of a CCLayer effect the Nodes scaled relative positions?

Завершить редактирование №1

Редактировать №2

 The contentSize of CCNode is (0,0).  How do I set the contentSize of CCNode manually?

Завершить редактирование #2

Изменить №3

Я нашел этот пост, где в одном из ответов говорится о настройке CCNode относительныйToAnchorPoint значение YES. Я не могу найти, как это сделать в Google. Кто-нибудь знает, как установить relativeToAnchorPoint?

Завершить редактирование №3

NodeA опускается ниже NodeB в направлении y. Таким образом, возникает несколько вопросов:

1)  Are CCNodes scaled with respect to an anchorPoint?
2)  Why is NodeA dropping below NodeB in the y direction?
3)  How can two CCNodes be scaled with their relative positions remaining constant?

person James Testa    schedule 25.03.2013    source источник
comment
масштабирование происходит не столько по отношению к точке привязки, сколько по их положению. Таким образом, верхняя точка привязки на 0,5, 1 будет оставаться в том же положении по мере роста.   -  person dqhendricks    schedule 25.03.2013
comment
Итак, трюк в том, что мне нужно найти anchorPoint для обоих узлов, чтобы они оставались фиксированными относительно друг друга?   -  person James Testa    schedule 25.03.2013
comment
Я не знаю, какой именно эффект вы ищете, но да, в основном. Имейте в виду, что точка привязки относится к размеру содержимого объекта, и добавление дочерних узлов не изменяет размер содержимого. Только текстура или ручная настройка влияют на contentSize.   -  person dqhendricks    schedule 25.03.2013
comment
У CCLayer есть contentSize, но есть ли у CCNode contentSize?   -  person James Testa    schedule 25.03.2013
comment
Он есть, но по умолчанию он (0,0), так как нет текстуры, которая бы давала ему размер по умолчанию. Как я уже сказал, добавление потомков не меняет размер узла. Однако вы можете указать размер вручную. Если что-то не имеет размера, то настройка точки привязки действительно не имеет значения (точка привязки всегда будет на 0,0 узла).   -  person dqhendricks    schedule 25.03.2013
comment
Правильно, это то, что я заметил, это то, что anchorPoint не влияет на CCNode. Фактически, anchorPoint, похоже, также не оказывает никакого влияния на NodeB.   -  person James Testa    schedule 25.03.2013
comment
Теперь, если бы вместо узлов они были спрайтами с текстурами (которые автоматически устанавливают размер содержимого) или если бы вы установили размер содержимого для своих узлов вручную, точка привязки начала бы иметь эффект.   -  person dqhendricks    schedule 25.03.2013
comment
Я попытался установить contentSize как ccnode.contentSize = CGSizeMake(480.0f, 320.0f); но, похоже, код anchorPoint не работал с ccnode.anchorPoint = ccl(0.5f, 0.0f);.   -  person James Testa    schedule 09.04.2013
comment
Как масштабировать до детей в cocos2d?   -  person James Testa    schedule 09.04.2013


Ответы (1)


  1. да
  2. см. 1, особенно если они не одного размера
  3. установите их точку привязки на 0,5,0, чтобы они оба выравнивались по низу при масштабировании
person LearnCocos2D    schedule 25.03.2013
comment
Это все еще не работает. Должно быть что-то еще, что мне не хватает. Я добавил больше информации в Edit #1. Кстати, у меня есть ваша книга, и это отличная книга. - person James Testa; 25.03.2013