diff --git a/packages-user/client-modules/src/render/elements/misc.ts b/packages-user/client-modules/src/render/elements/misc.ts index 2bf78cf..a713e33 100644 --- a/packages-user/client-modules/src/render/elements/misc.ts +++ b/packages-user/client-modules/src/render/elements/misc.ts @@ -159,6 +159,7 @@ export class Winskin extends RenderItem { private patternCache?: WinskinPatterns; private patternTransform: DOMMatrix; + // todo: 跨上下文可能是未定义行为,需要上下文无关化 private static patternMap: Map = new Map(); constructor( diff --git a/packages-user/client-modules/src/render/weather/controller.ts b/packages-user/client-modules/src/render/weather/controller.ts index f7c04e6..99f5858 100644 --- a/packages-user/client-modules/src/render/weather/controller.ts +++ b/packages-user/client-modules/src/render/weather/controller.ts @@ -83,7 +83,7 @@ export class WeatherController implements IWeatherController { const instance = new WeatherInstance(obj, element); instance.setZIndex(this.zIndex + this.active.size); this.active.add(instance); - this.container?.appendChild(element); + this.container.appendChild(element); return instance; } diff --git a/packages/animate/package.json b/packages/animate/package.json new file mode 100644 index 0000000..2029a01 --- /dev/null +++ b/packages/animate/package.json @@ -0,0 +1,3 @@ +{ + "name": "@motajs/animate" +} diff --git a/packages/animate/src/index.ts b/packages/animate/src/index.ts new file mode 100644 index 0000000..fcb073f --- /dev/null +++ b/packages/animate/src/index.ts @@ -0,0 +1 @@ +export * from './types'; diff --git a/packages/animate/src/types.ts b/packages/animate/src/types.ts new file mode 100644 index 0000000..792ff6f --- /dev/null +++ b/packages/animate/src/types.ts @@ -0,0 +1,55 @@ +export interface IExcitable { + /** + * 受到激励源激励 + * @param payload 由激励源传递而来的负载 + */ + excited(payload: T): void; +} + +export interface IExcitableController { + /** 受激励对象 */ + readonly excitable: T; + + /** + * 释放此受激励对象,不再受到当前激励源激励,可以换用其他激励源 + */ + revoke(): void; + + /** + * 手动激励此受激励对象一次 + * @param payload 激励负载 + */ + excite(payload: T): void; +} + +export interface IExcitation { + /** + * 获取当前的激励负载 + */ + payload(): T; + + /** + * 激励所有由此激励源激励的内容 + * @param payload 传递给激励内容的负载 + */ + excite(payload: T): void; + + /** + * 添加受激励对象 + * @param object 受激励对象 + * @returns 受激励对象控制器 + */ + add(object: IExcitable): IExcitableController; + + /** + * 移除一个受激励对象 + * @param object 受激励对象 + * @returns 是否成功移除,内容不存在或是其他特殊情况会返回 `false` + */ + remove(object: IExcitable): boolean; + + /** + * 摧毁这个激励源 + */ + destroy(): void; +}