Egret社区
1银子
通过debug可以看到tiled.TMXLayer._name, 但是tiled.TMXLayer.name返回空字符串。有什么建议吗?

我是拿GitHub上的tiled官方示例来测试的:
https://github.com/egret-labs/eg ... y/tree/master/tiled
只是修改了tiled\demo\src\testEntries\TestExample.ts:
[mw_shl_code=javascript,true]class TestExample extends egret.DisplayObjectContainer {
    protected touchPoint = new egret.Point(-1,-1);
    protected touchBeginPoint = new egret.Point(-1,-1);   
    protected stageWidth:number;
    protected stageHeight:number;
    protected maxMapWidth:number;
    protected maxMapHeight:number;   
    private url: string = "resource/map02.tmx";
    private tmxTileMap: tiled.TMXTilemap;

    public constructor() {
        super();

        var self = this;
        var urlLoader: egret.URLLoader = new egret.URLLoader();
        urlLoader.dataFormat = egret.URLLoaderDataFormat.TEXT;
        //load complete
        urlLoader.addEventListener(egret.Event.COMPLETE, this.onComplete, this);
        urlLoader.load(new egret.URLRequest(this.url));
    }

    private onComplete(event: egret.Event): void {
        var data: any = egret.XML.parse(event.target.data);
        this.tmxTileMap = new tiled.TMXTilemap(2000, 2000, data, this.url);
        this.addChild(this.tmxTileMap);

        this.tmxTileMap.touchEnabled = true;
        this.tmxTileMap.addEventListener(egret.TouchEvent.TOUCH_TAP, this.touchHandler, this);
        this.tmxTileMap.addEventListener(egret.TouchEvent.TOUCH_BEGIN, this.touchHandler, this);
        this.tmxTileMap.addEventListener(egret.TouchEvent.TOUCH_MOVE, this.touchHandler, this);
        this.tmxTileMap.addEventListener(egret.TouchEvent.TOUCH_END, this.touchHandler, this);
        
        this.tmxTileMap.render();


        var i, j: number = 0;
        //这个tiled.TMXObjectGroup就是专门用要解析地图里的对象层的数据的
        var group: tiled.TMXObjectGroup[] = this.tmxTileMap.getObjects();

        console.log("TMXObjectGroup length: %d", group.length);
        //根据业务逻辑需要拿到地图的对象数据
        for (i = 0; i < group.length; i++) {
            var item: tiled.TMXObjectGroup = group;

            console.log("item.name: " + item.name + ", " + item.getObjectCount());

            for (j = 0; j < item.getObjectCount(); j++) {
                var object: tiled.TMXObject = item.getObjectByIndex(j);

                console.log("object.name: " + object.name + ", " + + object.gid);
            }
        }


        var layers: any[] = this.tmxTileMap.getLayers();
        for (i = 0; i < layers.length; i++) {
            var layer: tiled.TMXLayer = layers; //TMXLayer
            console.log("layer" + i + ": " + layer.name + "(" + layer.rows + ", " + layer.cols + ")"
                // + ", layerData: " + layer.layerData
                // + ", staticContainer: " + layer.staticContainer
            );

        }
        
        this.maxMapWidth = layer.cols * this.tmxTileMap.tilewidth;
        this.maxMapHeight = layer.rows * this.tmxTileMap.tileheight;        
    }


    private touchHandler(evt: egret.TouchEvent): void {

        switch (evt.type) {
            case egret.TouchEvent.TOUCH_BEGIN: {
                this.touchPoint.x = this.touchPoint.y = -1;
                this.touchPoint.x = evt.stageX;
                this.touchPoint.y = evt.stageY;

                this.touchBeginPoint.x = evt.stageX;
                this.touchBeginPoint.y = evt.stageY;
            }
                break;

            case egret.TouchEvent.TOUCH_MOVE: {
                if (this.touchPoint.x >= 0) {
                    var dx = evt.stageX - this.touchPoint.x;
                    var dy = evt.stageY - this.touchPoint.y;
                    this.touchPoint.x = evt.stageX;
                    this.touchPoint.y = evt.stageY;

                    this.x += dx;
                    this.y += dy;

                    evt.target.x += dx;
                    evt.target.y += dy;
        
                    this.x = Math.min(this.x, 0);
                    this.y = Math.min(this.y, 0);
                    this.x = Math.max(this.x, -(this.maxMapWidth - this.stageWidth));
                    this.y = Math.max(this.y, -(this.maxMapHeight - this.stageHeight));
                }
            }
                break;
            case egret.TouchEvent.TOUCH_END: {
                if (Math.abs(this.touchBeginPoint.x - this.touchPoint.x) > 5 ||
                    Math.abs(this.touchBeginPoint.y - this.touchPoint.y) > 5)
                    return;
                this.touchPoint.x = this.touchPoint.y = -1;

                var pos = this.getPos(-this.x + evt.stageX, -this.y + evt.stageY);
            }
                break;
        }
    }
   
    protected getPos(x:number, y:number):egret.Point {
        var x = Math.floor(x / this.tmxTileMap.tilewidth);
        var y = Math.floor(y / this.tmxTileMap.tileheight);
        return new egret.Point( x, y );
    }   
}[/mw_shl_code]


其中的object.name和layer.name都应该返回有效字符串的,但是都是空字符串。
有什么建议吗?



分享到 :
0 人收藏

2 个回复

倒序浏览
cy3502398  登堂入室 | 2016-6-15 11:29:57
我检查了下,好像没有开放,下一版本更新的时候加上~
EthanKG  初窥堂奥 | 2016-6-15 14:03:34
了解了。有没有一个时间表?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部