class Layers {
constructor() {
this.mask = 1 | 0;
}
set(channel) {
this.mask = (1 << channel | 0) >>> 0;
}
enable(channel) {
this.mask |= 1 << channel | 0;
}
enableAll() {
this.mask = 0xffffffff | 0;
}
toggle(channel) {
this.mask ^= 1 << channel | 0;
}
disable(channel) {
this.mask &= ~(1 << channel | 0);
}
disableAll() {
this.mask = 0;
}
test(layers) {
return (this.mask & layers.mask) !== 0;//求当前对象和给定对象的图层的交集。两者不一致的情况下交集为空,反之则存在交集(也就是值不为0)。也就是只要两者的图层一致,就恒不为0,整个公式的值就为true,只要图层不一致,值为false。
}
isEnabled(channel) {
return (this.mask & (1 << channel | 0)) !== 0;
}
}