-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathtest2.ts
96 lines (85 loc) · 2.69 KB
/
test2.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
module test
{
/**
* cacheAsBitmap的替代方案,解决QQ浏览器在1G内存的机器上最多能使用20个Canvas的限制
*/
class test2
{
private _pool: Array<egret.RenderTexture>;
private _maxNum: number;
private _useNum: number;
/**
* 构造函数
*/
public constructor() {
this._pool = [];
this._useNum = 0;
if (this.isLowerQQBrowser()) {
this._maxNum = 18;
}
else {
this._maxNum = -1;
}
}
private static ins: RenderTextureManager;
public static get Ins(): RenderTextureManager {
if (this.ins == null) this.ins = new RenderTextureManager();
return this.ins;
}
/**
* 是否是低端手机的QQ浏览器
* @returns {boolean}
*/
private isLowerQQBrowser(): boolean {
if (egret.MainContext.runtimeType == egret.MainContext.RUNTIME_HTML5 && navigator.userAgent.indexOf('MQQBrowser') != -1) {
//判定机型,因为拿不到内存信息,现在只能根据机型进行判定
var arr: Array<string> = [
"2013022",
"Lenovo A630t",
"SM-G3818",
"vivo X3t",
"GT-I9100"
];
var lower: boolean = false;
for (var i = 0, len = arr.length; i < len; i++) {
if (navigator.userAgent.indexOf(arr[i]) != -1) {
lower = true;
break;
}
}
return lower;
}
return false;
}
/**
* 获取一个egret.RenderTexture
* @returns {egret.RenderTexture}
*/
public pop(): egret.RenderTexture {
var result = this._pool.pop();
if (!result) {
if (this._maxNum == -1 || this._useNum < this._maxNum) {
result = new egret.RenderTexture();
this._useNum++;
}
}
return result;
}
/**
* 回收一个egret.RenderTexture
* @param texture
*/
public push(texture: egret.RenderTexture): void {
var exists: boolean = false;
for (var i = 0, len = this._pool.length; i < len; i++) {
if (this._pool[i] == texture) {
exists = true;
break;
}
}
if (!exists) {
this._pool.push(texture);
}
}
}
}