2013-04-24 41 views
0

我想跟蹤屏幕上精靈的原始位置。在實例本身中包含CCSprite的原始位置

我還沒有找到記錄精靈原始位置的CCSprite的屬性,所以我在考慮子類化CCSprite並添加原始位置屬性。另一種選擇是使用複合對象,這似乎是基於我的研究的更好的方法。

我想在子類和使用複合對象之間進行選擇。另外,有沒有我錯過的選擇?

+1

如果你想爲所有精靈創建一個「previousLocation」變量,只需將它添加到cocos2d的CCNode源代碼中即可。單獨這種改變不適合子類*或*組合。 – LearnCocos2D 2013-04-24 17:30:26

+0

有趣的建議。這聽起來很簡單,但如果我更新Cocos2d的版本,那麼這不是我必須記住的。我想象一下,一旦我下載了新版本的Cocos2d,變量就會丟失。在這種情況下,爲什麼一個子類或作品是一個壞主意? – 2013-04-24 18:11:38

+0

,因爲它增加得太少。要合併更改使用源代碼管理(混帳或類似) – LearnCocos2D 2013-04-24 19:26:27

回答

0

CCSprite中存儲單個自定義對象的最快方法是使用userObject成員。

要保存CGPoint

mySprite.userObject = [NSValue valueWithCGPoint:mySprite.position]; 

這不需要子類或修改,但顯然限制了未來代碼的可讀性和增長。

+0

我喜歡這種方法。我唯一的問題是,爲什麼將mySprite.position轉換爲NSValue?難道你不能只說一些像mySprite.userObject = [ccp mysprite.position]?我不確定該語法是否正確... – 2013-04-24 18:31:10

+0

userObject需要作爲對象存儲。 CGPoint不是,這就是爲什麼你需要將它轉換爲NSValue。這與保存整數,雙打等類似於NSNumber。 – 2013-04-24 18:33:19

+0

謝謝Smugbit,我會試試你的方法。 – 2013-04-24 19:55:09

相關問題