我想跟蹤屏幕上精靈的原始位置。在實例本身中包含CCSprite的原始位置
我還沒有找到記錄精靈原始位置的CCSprite
的屬性,所以我在考慮子類化CCSprite
並添加原始位置屬性。另一種選擇是使用複合對象,這似乎是基於我的研究的更好的方法。
我想在子類和使用複合對象之間進行選擇。另外,有沒有我錯過的選擇?
我想跟蹤屏幕上精靈的原始位置。在實例本身中包含CCSprite的原始位置
我還沒有找到記錄精靈原始位置的CCSprite
的屬性,所以我在考慮子類化CCSprite
並添加原始位置屬性。另一種選擇是使用複合對象,這似乎是基於我的研究的更好的方法。
我想在子類和使用複合對象之間進行選擇。另外,有沒有我錯過的選擇?
在CCSprite
中存儲單個自定義對象的最快方法是使用userObject
成員。
要保存CGPoint
:
mySprite.userObject = [NSValue valueWithCGPoint:mySprite.position];
這不需要子類或修改,但顯然限制了未來代碼的可讀性和增長。
我喜歡這種方法。我唯一的問題是,爲什麼將mySprite.position轉換爲NSValue?難道你不能只說一些像mySprite.userObject = [ccp mysprite.position]?我不確定該語法是否正確... – 2013-04-24 18:31:10
userObject需要作爲對象存儲。 CGPoint不是,這就是爲什麼你需要將它轉換爲NSValue。這與保存整數,雙打等類似於NSNumber。 – 2013-04-24 18:33:19
謝謝Smugbit,我會試試你的方法。 – 2013-04-24 19:55:09
如果你想爲所有精靈創建一個「previousLocation」變量,只需將它添加到cocos2d的CCNode源代碼中即可。單獨這種改變不適合子類*或*組合。 – LearnCocos2D 2013-04-24 17:30:26
有趣的建議。這聽起來很簡單,但如果我更新Cocos2d的版本,那麼這不是我必須記住的。我想象一下,一旦我下載了新版本的Cocos2d,變量就會丟失。在這種情況下,爲什麼一個子類或作品是一個壞主意? – 2013-04-24 18:11:38
,因爲它增加得太少。要合併更改使用源代碼管理(混帳或類似) – LearnCocos2D 2013-04-24 19:26:27