0

我正在使用 BOX2D 开发游戏。plist 文件设置为仅支持纵向方向。游戏以纵向模式正常启动。我使用 CCLayer 进行子类化。为了切换视图或场景,我使用下面的代码。

[[CCDirector sharedDirector] pushScene:[场景]];

所以我想要的只是在加载视图/场景时改变方向。

1st View/Scene -> Portrait Mode
2nd View/Scene -> Landscape Mode
3rd View/Scene -> Portrait Mode

尝试了一些来源,但没有很好的帮助。请帮我解决一下这个。任何建议将不胜感激。谢谢你。

4

1 回答 1

0

在我看来,您希望将整个场景旋转 90 度(- 或 +)以实现您的视图的纵向和横向。做到这一点且不被卷入其中的一种简单方法是创建一个非常小的图层作为枢轴点,将所有视图保持在屏幕的中心。

  • 创建一个非常小的 CCLayer 作为视口。让我们称之为 viewportLayer。
  • 将 viewportLayer 的位置设置为屏幕的中心。
  • 将第 1、第 2 和第 3 个视图场景添加为 viewportLayer 的子项。

完成上述操作后,每当您需要进入纵向或横向模式时,您所要做的就是将 viewportLayer 旋转 90 度(- 或 +)。

作为额外的奖励,放大和缩小也成为一个简单的解决方案。要实现缩放,您所要做的就是缩放 viewportLayer 而不必担心孩子。所有碰撞计算仍然可以很好地工作,因为这些计算最有可能在子层中完成,因此不受父变换的影响。

于 2013-09-03T11:05:21.550 回答