我設法遍歷Tiled圖層中的所有CCSprites(圖塊)。但是,我真正需要的是遍歷圖層中所有圖塊的所有(NSDictionaries)屬性。我會怎麼做呢?我並不需要獲得CCSprites,只是屬性列表。迭代遍歷圖層中的所有圖塊屬性
3
A
回答
7
您需要使用-(NSDictionary*)propertiesForGID:(unsigned int)GID
方法來獲取圖塊屬性。
但首先你需要知道瓷磚的GID。獲得從-(uint32_t) tileGIDAt:(CGPoint)pos
方法CCTMXLayer
:
CGPoint pos = ccp(2,1);
uint gid = [layer tileGIDAt:pos];
if (gid > 0) {
NSDictionary *tileProperty = [tiledMap propertiesForGID:gid];
// do stuff here
}
編輯:這裏是如何通過所有瓷磚迭代上CCTMXLayer
:
for (NSUInteger y = 0; y < tmxLayer.layerSize.height; y++) {
for (NSUInteger x = 0; x < tmxLayer.layerSize.width; x++) {
NSUInteger pos = x + tmxLayer.layerSize.width * y;
uint32_t gid = tmxLayer.tiles[pos];
if (gid > 0) {
NSDictionary *tileProperty = [tiledMap propertiesForGID:gid];
// do stuff here
}
}
}
相關問題
- 1. 遍歷所有圖層名稱
- 2. 遍歷所有ServletRequest屬性
- 3. 遍歷所有類屬性
- 4. 迭代遍歷所有行Smartsheet API Python
- 5. 遍歷所有未知的XML屬性
- 6. 遍歷所有圖像
- 7. 如何遍歷所有對象屬性
- 8. Neo4j遍歷不加載所有屬性
- 9. 如何遍歷所有屬性和alias_attribute?
- 10. 迭代器中迭代遍歷控件
- 11. 迭代Inorder遍歷
- 12. DFS遍歷迭代
- 13. 迭代列表中的所有屬性
- 14. 遍歷glibc malloc中的所有區塊中的所有區塊
- 15. 遍歷模塊中的所有結構
- 16. 遍歷所有節點的迭代延長僞代碼
- 17. 圖遍歷的複雜性
- 18. 迭代遍歷類Angular4
- 19. libxmlrpc迭代遍歷struct
- 20. 迭代後序遍歷bst?
- 21. 迭代八叉樹遍歷
- 22. itertools.groupby:迭代遍歷組pairwise
- 23. C++迭代器遍歷
- 24. 迭代DFS如何遍歷?
- 25. 迭代器遍歷給定大小的所有子集
- 26. 遍歷樹並推送數組中的所有屬性
- 27. 遍歷XSLT中XML元素的所有屬性
- 28. c中的迭代目錄遍歷
- 29. 迭代鏈表和地圖與所述屬性文件中值
- 30. jQuery - 迭代遍歷所有元素並改變其風格
我假設你做你自己的包裝類CCSprite和您添加該包裝類的屬性,是否正確? – CStreel
嗯,不完全是。您會發現,Tiled程序可以讓您將屬性添加到tileset的圖塊(這些屬性就像字典 - 您提供了一個鍵和一個值)。在Cocos2d中,可以在X位置獲取一個圖塊並讀取這些屬性。我需要遍歷圖層中的所有圖塊屬性。我找不到遍歷圖層中所有圖塊的方法。 – Voldemort
鑑於我可以在(X,Y)位置檢查圖塊的屬性,有些人會建議我簡單地「遍歷圖層中的所有X和Y,以便獲取所有屬性」。那麼,問題是如果我使用一個不存在瓦片的位置,我會一直得到Assertion Failures。這樣的錯誤似乎會導致遊戲中出現一些滯後或其他意想不到的結果... – Voldemort