2015-02-14 6 views
0

В Cocos2d (Android, JAVA) я использую CCRotateBy для поворота одного CCNode с несколькими фрагментами в нем в качестве детей. Я хочу использовать центр центральной плитки в качестве точки вращения, поэтому я решил использовать Anchorpoint.RotateBy Anchorpoint, не влияющий на вращение

Однако не имеет значения, какое значение я даю Anchorpoint, плитки продолжают вращаться в левом нижнем углу экрана. Как так?

(плитки CCNodes, собраны в двух списках, tilesSelected и secondaryTilesSelected)

  // I create one node which holds all the tiles I want to rotate 
      CCNode tilesToRotate = CCNode.node(); 

      tilesToRotate.addChild(tilesSelected.get(0), 0, 99); 
// then, I add the 4 tiles around the previous, center tile 

      for (int i=0; i < secondaryTilesSelected.size(); i++){ 

       tilesToRotate.addChild(secondaryTilesSelected.get(i), 0, 99); 
      } 
      // So, if I change 700,700 hereunder to different values, it doesn't change the centerpoint for Rotation. I guess I don't get it... 

      addChild(tilesToRotate); 
      tilesToRotate.setAnchorPoint(CGPoint.make(700,700)); 
      CCAction r90 = CCRotateBy.action(1f, 90f); 
      tilesToRotate.runAction(r90); 

ответ

1

anchorPoint является одним из факторов в диапазоне от 0,0 (левого нижнего угла) до 1,1 (верхнего правого угла содержание)

Вы устанавливаете якорь слишком далеко от узла на 700,700

+0

Использовав это на некоторое время теперь, это выглядит, что в моем (JAVA) реализации 0,0 на самом деле является средним, -0,5 f, -0.5f - нижний левый и 0.5f, 0.5f - верхний правый. Имеет ли это смысл? Также; при изменении anchorpoint, я должен был также сбросить положение узла, чтобы сохранить его в том же месте. –