请问tiledMap的tmx文件怎么通过本地从服务器读取?

为了方便策划测试,我把tmx文件都放到服务器,然后本地读取
public RELATIVE_PATH_OF_IMAGES = ‘https://rock.jsstudio.cn/jianghu_map/
public IMAGE_NAMES = [‘map_0.png’, ‘map_1.png’, ‘map_2.png’, ‘map_3.png’]

cc.loader.load({ url: ‘https://rock.jsstudio.cn/jianghu_map/map_test.tmx’, type: ‘tmx’ }, (err, map_data) => {
var tmxAsset = new cc.TiledMapAsset();
tmxAsset.tmxXmlStr = map_data;
tmxAsset.tmxFolderPath = self.RELATIVE_PATH_OF_IMAGES;
console.log('tmxAssetis ', tmxAsset);

        console.log('map tmx data is ', map_data);

        var imgPaths = self.IMAGE_NAMES.map(function (imgName) {
            return self.RELATIVE_PATH_OF_IMAGES + '/' + imgName;
        });

        cc.loader.load(imgPaths, function (err, tex) {
            // console.log("imgPaths is ", imgPaths)
            let map = self.view["map_cont"].getChildByName('map_test')
            self.tiledMap = map.getComponent(cc.TiledMap);
            self.tiledMap.tmxAsset = tmxAsset;
        });
    })

现在数据是读取到了,但是运行的时候,提示图片文件找不到

求大神看看到底怎么才能让图片也能匹配到地图文件

private onRemoteMapAssetLoaded(results: LoadUtil.ResultMap): void
    {
        let tmxAsset = new cc.TiledMapAsset();

        let mapTmxString: string = results.tmx.asset;//tmx使用字符串加载
        tmxAsset.tmxXmlStr = mapTmxString;//直接赋值内容

        let mapTsxString: string = results.tsx.asset;//也是字符串
        let tsxAsset = new cc.TextAsset();
        tsxAsset.text = mapTsxString;
        tmxAsset.tsxFiles = [tsxAsset];
        tmxAsset.tsxFileNames = [CityMap.FILE_NAME_MAP_TSX];//编辑时对应的名字

        let mapTexture: cc.Texture2D = results.texture.asset;//纹理
        tmxAsset.textures = [mapTexture];
        tmxAsset.textureNames = [CityMap.FILE_NAME_MAP_TEXTURE]//编辑时图片名字

        CommonUtil.callFunc(this.loadedCallback, this.loadedCallbackTarget, null, tmxAsset);
    }

tsxFiles和tsxFileNames、textures和textureNames要对应

cc.loader.load({ url: ‘https://xxxx/map_test.tmx’, type: ‘tmx’ }, (err, map_data) => {
var tmxAsset = new cc.TiledMapAsset();
console.log("map_data is ", map_data);
let mapTmxString: string = map_data.tmx.asset;//tmx使用字符串加载
tmxAsset.tmxXmlStr = mapTmxString;
let mapTsxString: string = map_data.tsx.asset;//也是字符串
let tsxAsset = new cc.TextAsset();
tsxAsset.text = mapTsxString;
tmxAsset.tsxFiles = [tsxAsset];
tmxAsset.tsxFileNames = this.IMAGE_NAMES;//编辑时对应的名字

        tmxAsset.tmxFolderPath = self.RELATIVE_PATH_OF_IMAGES;
        let mapTexture: cc.Texture2D = map_data.texture.asset;//纹理
        tmxAsset.textures = [mapTexture];
        tmxAsset.textureNames = this.IMAGE_NAMES//编辑时图片名字

        let map = self.view["map_cont"].getChildByName('map_test')
        self.tiledMap = map.getComponent(cc.TiledMap);
        console.log('---tmxAssetis ', tmxAsset);
        self.tiledMap.tmxAsset = tmxAsset;

        self.is_prefab_finish[2] = true;
    })

你好,我读取的是一个tmx文件,但是
let mapTmxString: string = map_data.tmx.asset;//tmx使用字符串加载
let mapTsxString: string = map_data.tsx.asset;//也是字符串

但是这里读取不到,我看了tmx文件,也没有tmx 和 tsx
请问这里是怎么获取得到的呢?

另外
tmxAsset.tsxFileNames = [CityMap.FILE_NAME_MAP_TSX];//编辑时对应的名字
指的是图块的名字吗?
谢谢

晚了没:joy:

import { LoadUtil } from "../../../../../utils/LoadUtil";
import Assets from "../../../../asset/Assets";
import Game from "../../../../Game";
export class CityMap
{
    private static readonly FILE_NAME_MAP_TMX: string = 'map.tmx';
    private static readonly FILE_NAME_MAP_TSX: string = 'map.tsx';
    private static readonly FILE_NAME_MAP_TEXTURE: string = 'map.jpg';
    private cityID: number;
    private loadedCallback: Function = null;
    private loadedCallbackTarget: any = null;
    constructor(cityID: number)
    {
        this.cityID = cityID;
    }
    public load(callback: (error: string, asset: cc.TiledMapAsset) => void, target: any): void
    {
        this.loadedCallback = callback;
        this.loadedCallbackTarget = target;
        if (Assets.Feature.City['City' + this.cityID])
        {
            LoadUtil.load(Assets.Feature.City['City' + this.cityID].Map, this.onLocalMapAssetLoaded, this);
        }
        else
        {
            let cityBaseUrl = cc.path.join('resource', 'city', 'city' + this.cityID);
            let cityMapTmxUrl = cc.path.join(cityBaseUrl, CityMap.FILE_NAME_MAP_TMX);
            let cityMapTsxUrl = cc.path.join(cityBaseUrl, 'map.tsx');
            let cityMapTextureUrl = cc.path.join(cityBaseUrl, CityMap.FILE_NAME_MAP_TEXTURE);
            let mapPathMap: LoadUtil.PathMap = {
                tmx: {
                    url: cc.path.join(Game.ResourceServer, cityMapTmxUrl),
                    savePath: cc.path.join(Game.ResourceLocalPath, cityMapTmxUrl)
                },
                tsx: {
                    url: cc.path.join(Game.ResourceServer, cityMapTsxUrl),
                    savePath: cc.path.join(Game.ResourceLocalPath, cityMapTsxUrl)
                },
                texture: {
                    url: cc.path.join(Game.ResourceServer, cityMapTextureUrl),
                    savePath: cc.path.join(Game.ResourceLocalPath, cityMapTextureUrl)
                }
            }
            LoadUtil.load(mapPathMap, this.onRemoteMapAssetLoaded, this);
        }
    }
    private onLocalMapAssetLoaded(result: LoadUtil.Result): void
    {
        let tmxAsset = result.asset as cc.TiledMapAsset;
        this.loadedCallback.call(this.loadedCallbackTarget, null, tmxAsset);
    }
    private onRemoteMapAssetLoaded(results: LoadUtil.ResultMap): void
    {
        let tmxAsset = new cc.TiledMapAsset();
        let mapTmxString: string = results.tmx.asset;
        tmxAsset.tmxXmlStr = mapTmxString;
        let mapTsxString: string = results.tsx.asset;
        let tsxAsset = new cc.TextAsset();
        tsxAsset.text = mapTsxString;
        tmxAsset.tsxFiles = [tsxAsset];
        tmxAsset.tsxFileNames = [CityMap.FILE_NAME_MAP_TSX];
        let mapTexture: cc.Texture2D = results.texture.asset;
        tmxAsset.textures = [mapTexture];
        tmxAsset.textureNames = [CityMap.FILE_NAME_MAP_TEXTURE]
        this.loadedCallback.call(this.loadedCallbackTarget, null, tmxAsset);
    }
    public release(): void { }
}