tiledmap组件无法在start函数内获取tile

start: function () {
        //var layout = this.node.getChildByName("havetile");
        var map = this.node.getComponent(cc.TiledLayer);
        var tiles = map.getTiles(); //这里获取不到tiles  为undefined
        for (var i in tiles) {
            var bnot = tiles[i];
            if (bnot == 0) {
                var pos = map.getPositionAt(this.getPosByIndex(i))
                var num = this.pre.length;
                var r = Math.ceil(Math.random()*(num-1)*num);
                var pre = this.pre[r-1];
                var nd = cc.instantiate(pre);
                nd.parent = this.node;
                nd.x = pos.x;
                nd.y = pos.y;
            }
        }
    },

    // called every frame, uncomment this function to activate update callback
    update: function (dt) {
        if (this.bload == false) {
            var map = this.node.getComponent(cc.TiledLayer);
            var tiles = map.getTiles();//这里需要跳几帧后才能获取到tile
            for (var i in tiles) {
                this.bload = true;
                var bnot = tiles[i];
                if (bnot == 0) {
                    var pos = map.getPositionAt(this.getPosByIndex(i))
                    var num = this.pre.length;
                    var r = Math.ceil(Math.random()*(num-1)*num);
                    var pre = this.pre[r-1];
                    var nd = cc.instantiate(pre);
                    nd.parent = this.node;
                    nd.x = pos.x;
                    nd.y = pos.y;
                }
            }         
        }
        else{
            var map = this.node.getComponent(cc.TiledLayer);
            var tiles = map.getTiles();
        }

    },

跟踪源码发现在渲染到tilemap的时候才调用cc.loader.load来获取tmx文件,这个有什么解决办法吗

需要取得tiledMap组件的方法,都需要代理到tiledMap组件的onMapLoaded中 start是原先0.8beta时候的遗迹。 据说后面的版本扔恢复start方法。

恩,我看了源码了,这个也算是个bug吧,为什么就不能反序列化的时候就_applyfile()呢,非要等到render的时候再次重复cc.loader.load原来已经load过的tmx文件

tmx 文件初始化时需要异步加载的问题在最新的引擎代码中已经修改了。
后续版本会去除 mapLoaded 回调。到时候在 start 函数中就可以正常使用 TiledMap 组件了。

你说的最新是指1.0.2吗,还是指你们在研版本还没放出的:clap:

在研版本,还没放出。

1赞

我去 回复好快!赞!

最新版本不会使用tiled map 求教