diff --git a/source/bin/framework.d.ts b/source/bin/framework.d.ts index 49abd497..f2ee3b46 100644 --- a/source/bin/framework.d.ts +++ b/source/bin/framework.d.ts @@ -353,7 +353,7 @@ declare module es { * 创建组件的新实例。返回实例组件 * @param componentType */ - createComponent(componentType: new () => T): T; + createComponent(componentType: new (...args: any[]) => T): T; /** * 将组件添加到组件列表中。返回组件。 * @param component @@ -363,14 +363,14 @@ declare module es { * 获取类型T的第一个组件并返回它。如果没有找到组件,则返回null。 * @param type */ - getComponent(type: any): T; + getComponent(type: new (...args: any[]) => T): T; /** * 尝试获取T类型的组件。如果未找到任何组件,则返回false * @param type * @param outComponent * @returns */ - tryGetComponent(type: any, outComponent: Ref): boolean; + tryGetComponent(type: new (...args: any[]) => T, outComponent: Ref): boolean; /** * 检查实体是否具有该组件 * @param type @@ -1100,7 +1100,7 @@ declare module es { } } declare module es { - abstract class Collider extends Component { + class Collider extends Component { /** * 对撞机的基本形状 */ diff --git a/source/src/ECS/Components/Physics/ArcadeRigidbody.ts b/source/src/ECS/Components/Physics/ArcadeRigidbody.ts index 294e8dba..73ec40d3 100644 --- a/source/src/ECS/Components/Physics/ArcadeRigidbody.ts +++ b/source/src/ECS/Components/Physics/ArcadeRigidbody.ts @@ -128,7 +128,7 @@ module es { } public onAddedToEntity() { - this._collider = this.entity.getComponent(es.Collider); + this._collider = this.entity.getComponent(es.Collider); Debug.warnIf(this._collider == null, "ArcadeRigidbody 没有 Collider。ArcadeRigidbody需要一个Collider!"); } diff --git a/source/src/ECS/Components/Physics/Colliders/Collider.ts b/source/src/ECS/Components/Physics/Colliders/Collider.ts index b977e496..0cb33cf8 100644 --- a/source/src/ECS/Components/Physics/Colliders/Collider.ts +++ b/source/src/ECS/Components/Physics/Colliders/Collider.ts @@ -1,5 +1,5 @@ module es { - export abstract class Collider extends Component { + export class Collider extends Component { /** * 对撞机的基本形状 */ diff --git a/source/src/ECS/Components/Physics/ProjectileMover.ts b/source/src/ECS/Components/Physics/ProjectileMover.ts index cfeea940..3416f836 100644 --- a/source/src/ECS/Components/Physics/ProjectileMover.ts +++ b/source/src/ECS/Components/Physics/ProjectileMover.ts @@ -8,7 +8,7 @@ module es { private _collider: Collider; public onAddedToEntity() { - this._collider = this.entity.getComponent(Collider); + this._collider = this.entity.getComponent(Collider); Debug.warnIf(this._collider == null, "ProjectileMover没有Collider。ProjectilMover需要一个Collider!"); } diff --git a/source/src/ECS/Entity.ts b/source/src/ECS/Entity.ts index 1589b959..44b49aa0 100644 --- a/source/src/ECS/Entity.ts +++ b/source/src/ECS/Entity.ts @@ -384,7 +384,7 @@ module es { * 创建组件的新实例。返回实例组件 * @param componentType */ - public createComponent(componentType: new () => T): T { + public createComponent(componentType: new (...args) => T): T { let component = new componentType(); this.addComponent(component); return component; @@ -405,7 +405,7 @@ module es { * 获取类型T的第一个组件并返回它。如果没有找到组件,则返回null。 * @param type */ - public getComponent(type: any): T { + public getComponent(type: new (...args) => T): T { return this.components.getComponent(type, false); } @@ -415,7 +415,7 @@ module es { * @param outComponent * @returns */ - public tryGetComponent(type: any, outComponent: Ref): boolean { + public tryGetComponent(type: new (...args) => T, outComponent: Ref): boolean { outComponent.value = this.components.getComponent(type, false); return outComponent.value != null; }