diff --git a/source/Model/Model.ts b/source/Model/Model.ts index 3448165..24179b6 100644 --- a/source/Model/Model.ts +++ b/source/Model/Model.ts @@ -90,6 +90,31 @@ class Model extends Emitter { } } + /** + * 通过标签获取指定类型的对象 + * @param label 标签 + * @param type 筛选类型 + */ + public getObjectByLabel( + label: Label, type?: + (new (...p: any) => Range) | + (new (...p: any) => Group) + ): CtrlObject[] { + const res: CtrlObject[] = []; + for (let i = 0; i < this.objectPool.length; i++) { + if (this.objectPool[i].hasLabel(label)) { + if (type) { + if (this.objectPool[i] instanceof type) { + res.push(this.objectPool[i]); + } + } else { + res.push(this.objectPool[i]); + } + } + } + return res; + } + /** * 添加组 */