【问题标题】:CGPointMake origin for (0,0) in cocos2dcocos2d中(0,0)的CGPointMake原点
【发布时间】:2011-11-17 15:06:42
【问题描述】:

我正在查看 cocos2d 项目中的一些示例代码。我之前使用 Core Graphics (Quartz) 构建了一个项目,其中坐标 (0,0) 是屏幕的左上角。在这个项目中,如果我使用 CGPointMake(0,0) 它位于左下角。我知道坐标系是不同的,但是程序究竟会在哪里指定要使用的坐标系?实际进行此切换的设置或方法是什么?

【问题讨论】:

    标签: objective-c opengl-es cocos2d-iphone


    【解决方案1】:

    没有开关。如果你想使用 Cocos2D,习惯它的坐标系原点在屏幕的左下角。

    我已经看到用户进行了各种尝试来“修复”这个问题,或者通过修改 Cocos2D 源代码,或者通过覆盖所有节点的 setPosition 属性来发现这还不够。我敢打赌,他们所有人都遇到了很多问题,包括当你需要重用别人的代码时,你也面临着对该代码进行必要的坐标系修复。这是一场永无止境的斗争,真的不值得花费任何时间。

    与其改变代码,不如改变你的看法。习惯不同的坐标系并在其中思考。更容易,未来的麻烦也少得多。毕竟,你真正需要改变的只是 Y 坐标的符号已经改变了。

    【讨论】:

    • 谢谢,我不介意按原样使用它,我只是想知道它为什么会这样工作。我可以理解为什么cocos框架本身的setPosition可以按照cocos开发者设计的任何方式工作,这很好,但是为什么CGPointMake这个iOS原生函数也可以用新的坐标系定位呢?在程序的某处必须有一个设置告诉编译器或运行时使用不同的坐标系。
    • 这是因为 OpenGL 及其设置方式。有一种方法可以更改坐标系,但当前的设置与 Cocos2D 的工作方式紧密交织在一起:stackoverflow.com/questions/611468/…
    • 谢谢。我没有任何改变坐标系的愿望,但我只是好奇 iPhone SDK 中的本地调用如何最终使用不同的坐标,这是如何在程序中操作的。我假设它相当复杂。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 2014-07-27
    • 2023-03-25
    • 1970-01-01
    • 2015-03-18
    • 2016-10-09
    相关资源
    最近更新 更多