/
TiledLayer.ts
54 lines (49 loc) · 1.55 KB
/
TiledLayer.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
///<amd-module name="world/TiledLayer"/>
import Kernel = require('./Kernel');
import Object3DComponents = require('./Object3DComponents');
import SubTiledLayer = require('./SubTiledLayer');
abstract class TiledLayer extends Object3DComponents {
//重写
add(subTiledLayer: SubTiledLayer) {
super.add(subTiledLayer);
subTiledLayer.tiledLayer = this;
}
protected wrapUrlWithProxy(url: string): string{
if(Kernel.proxy){
return Kernel.proxy + "?" + url;
}
return url;
}
//根据切片的层级以及行列号获取图片的url,抽象方法,供子类实现
abstract getImageUrl(level: number, row: number, column: number): string
//根据传入的level更新SubTiledLayer的数量
updateSubLayerCount(level: number) {
var subLayerCount = this.children.length;
var deltaLevel = level + 1 - subLayerCount;
var i: number, subLayer: SubTiledLayer;
if (deltaLevel > 0) {
//需要增加子图层
for (i = 0; i < deltaLevel; i++) {
var args = {
level: i + subLayerCount
};
subLayer = new SubTiledLayer(args);
this.add(subLayer);
}
} else if (deltaLevel < 0) {
//需要删除多余的子图层
deltaLevel *= -1;
for (i = 0; i < deltaLevel; i++) {
var removeLevel = this.children.length - 1;
//第0级和第1级不删除
if (removeLevel >= 2) {
subLayer = <SubTiledLayer>this.children[removeLevel];
this.remove(subLayer);
} else {
break;
}
}
}
}
}
export = TiledLayer;