[]tiledmap有时尺寸不正确


tiledmap_1.png


tiledmap_2.png


使用LayaAir,一样的代码资源,有时候启动的时候地图尺寸会变大(会调用到注册的RESIZE事件回调函数),大部分时候是正常的(不会调用到RESIZE事件回调函数),是我写的问题还是LayaAir有bug吗,我的代码是根据教程来写的,现附上代码
export class Scene{

// 当前场景的配置信息
private _mLevelConf:LevelConf = null;
// 地图文件
private _mTiledMap:TiledMap = null;
// 自定义信息文件
private _mLoader:Loader = null;
// 当前地图X坐标
private _mViewPortX:number = 0;
// 当前地图Y左边
private _mViewPortY:number = 0;
// 当前加载状态
private _mLoadState:ESceneLoadState = ESceneLoadState.eLoadNull;
// 地图创建完成回调函数
private _mCompleteHandler:Handler = null;

private _mTest:number = 0;

constructor(){

}

/**
* 创建地图,并显示当前场景
* @param conf 地图的配置信息
*/
public create(conf:LevelConf, handler:Handler):void{
this._mLevelConf = conf;
this._mCompleteHandler = handler;
this._mViewPortX = 0;
this._mViewPortY = 0;
this._mTiledMap = new TiledMap();
this._mLoadState = ESceneLoadState.eLoadMap;
this._mTiledMap.createMap(conf.fileName + ".json", new Rectangle(0, 0, Browser.width, Browser.height), Handler.create(this, this.onCompleteHandler));
}

/**
* 销毁当前地图
*/
public destroy():void{
if (this._mTiledMap)
this._mTiledMap.destroy();
if (this._mLevelConf)
this._mLevelConf = null;
this._mLoadState = ESceneLoadState.eLoadNull;
}

/**
* 地图数据加载完成后的回调函数
*/
private onCompleteHandler():void{

if (this._mLoadState === ESceneLoadState.eLoadMap){
this.onBuildMap();
this.loadObjects();
}
else if(this._mLoadState === ESceneLoadState.eLoadObject){
this.onBuildObject();
}
}

/**
* 加载自定义的格子信息
*/
private loadObjects():void{
this._mLoadState = ESceneLoadState.eLoadObject;

// 测试,暂时不加载自定义信息
this.Complete();
}

/**
* 地图文件加载完成后的处理
*/
private onBuildMap():void{

}

/**
* 自定义格子信息加载完成后的处理了
*/
private onBuildObject():void{

}

/**
* 全部资源加载完成,通知上层逻辑
*/
private Complete():void{

this._mLoadState = ESceneLoadState.eLoadComplete;

Laya.stage.on(Laya.Event.RESIZE, this, this.onResizeHandler);
this.onResizeHandler();

if (this._mCompleteHandler){
this._mCompleteHandler.run();
}
}

private onResizeHandler():void{
this._mTiledMap.changeViewPort(this._mViewPortX, this._mViewPortY, Browser.width, Browser.height);
console.log(`ViewPort=${this._mViewPortX},${this._mViewPortY},${Browser.width},${Browser.height}`);
console.log(`Map=${this._mTiledMap.width},${this._mTiledMap.height}`);

if(++this._mTest === 2){
console.log("the second call.");
}
}
}
已邀请:

Aar0n

赞同来自:

检查自己的逻辑呀

要回复问题请先

商务合作
商务合作