2011-11-17 48 views
2

我正在查看cocos2d項目中的一些示例代碼。我以前使用Core Graphics(Quartz)構建了一個項目,其中座標(0,0)是屏幕的左上角。在這個項目中,如果我使用CGPointMake(0,0),它位於左下角。我知道座標系是不同的,但程序確切地指定要使用哪個座標系?實際做這個開關的設置或方法是什麼?CGPoint在(0,0)中的起源爲cocos2d

回答

2

沒有開關。如果您想使用Cocos2D,請適應屏幕左下角的座標系原點。

我已經看到用戶通過在Cocos2D源代碼中進行黑客攻擊或通過重寫所有節點的setPosition屬性來發現這是不夠的,可以通過各種方式「修復」這種嘗試。我敢打賭,他們都遇到了很多問題,包括這樣一個事實,即無論何時您需要重新使用別人的代碼,您都需要對該代碼進行必要的座標系修復。這是一場永無休止的鬥爭,真的不值得花費任何時間。

而不是改變代碼,改變你的看法。習慣不同的座標系並思考它。未來更容易,麻煩更少。畢竟,你真正需要改變的是,Y座標的符號已經改變。

+0

謝謝,我不介意使用它的方式,我只是想知道爲什麼它的工作方式。我可以理解爲什麼在cocos框架本身中的setPosition可以以任何方式用Cocos開發人員設計的方式工作,這很好,但爲什麼本地iOS功能CGPointMake也可以使用新的座標系?程序中的某處必須有一個設置,告訴編譯器或運行時使用不同的座標系。 – johnbakers

+0

這是因爲OpenGL和它的設置方式。有一種方法可以改變座標系,但目前的設置與Cocos2D的工作方式完全交織在一起:http://stackoverflow.com/questions/611468/in-opengl-es-how-do-i-convert-screen-座標到世界座標 – LearnCocos2D

+0

謝謝。我沒有任何改變座標系的願望,但我只是很好奇iPhone SDK中的本地調用如何最終使用不同的座標,這是如何在程序中被操縱的。我會認爲它相當複雜。 – johnbakers