

cocos2d-x ver 3.6 を使用して、下記のコードを書きました。

本件の目的は、  
TMXTiledMap 内のレイヤ名を、TMXTiledMap編集者（非プログラマ）が、  
自由に名称をつけ、それをプログラム側で読み込めるようにする事がしたいです。

* * *
[code]

    auto map = TMXTiledMap::create(FileName);
    
    // 地形レイヤを取得する
    auto terrainLayer = map->getLayer("Terrain");
    if (nullptr== terrainLayer){
        // terrainLayerが存在しない場合
    }
    
[/code]

* * *

例えば、上記コードの場合は、作成したファイルのレイヤ名"Terrain"にすれば読み込めます。  
レイヤ名が不明の状態ではgetLayerは使用出来ず困っています。

下記ページも拝見しましたが、良く分からなかった為、この場で質問させてください。  
<http://www.cocos2d-x.org/reference/native-
cpp/V3.0/d6/d48/classcocos2d_1_1_t_m_x_tiled_map.html>


CC BY-SA 3.0
2015-07-26T06:50:13.930
12713
2015-09-15T09:22:44.390
2015-07-27T02:10:45.663
49
10686
question
cocos2d-x
cocos2d-x で TiledMapの全レイヤ名を取得する方法について


レイヤー名は複数のレイヤーの中から指定のレイヤーを探すために存在します。  
当然マップ作成者とプログラマーの間で取り決めが必要です。  
でないとどのレイヤーが何を表すのかさっぱりわかりません。  
プロパティを追加して何とかする手はありますが普通はしないでしょう。


CC BY-SA 3.0
2015-07-27T02:55:56.630
12734
2015-07-27T02:55:56.630
5005
12713
answer


結構前の質問なので、解決済みかもしれませんが

[code]

        auto tileMap = TMXTiledMap::create("ファイル名");
        Vector<Node*> childOfMap = tileMap->getChildren();
        for (auto& child : childOfMap)
        {
            TMXLayer* layer = dynamic_cast<TMXLayer*>(child);
            if(layer != nullptr) {
                const std::string name = layer->getLayerName();
                CCLOG("%s", name.c_str());
            }
        }
    
[/code]

でどうでしょうか？ 勘違いしていたらごめんなさい


CC BY-SA 3.0
2015-09-15T09:22:44.390
16633
2015-09-15T09:22:44.390
849
12713
answer