modern-canvas 0.24.2 → 0.24.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -114,7 +114,10 @@ export declare class Element2D extends Node2D implements Rectangulable {
114
114
  requestLayout(): void;
115
115
  protected _process(delta: number): void;
116
116
  protected _updateConnection(): void;
117
+ /** 上一次渲染时的视口裁剪结果(true=离屏被裁剪)。供非渲染阶段(如 Video2D 解码门控)读取。 */
118
+ protected _renderCulled: boolean;
117
119
  protected _cullsRender(): boolean;
120
+ protected _computeCullsRender(): boolean;
118
121
  protected _intersectsViewport(viewport: Viewport): boolean;
119
122
  protected _styleFilter?: string;
120
123
  protected _elementFilter?: string;
@@ -1,7 +1,10 @@
1
1
  import type { NodeEvents, NodeProperties } from './Node';
2
2
  import { Node } from './Node';
3
+ export type TimelineLoopMode = 'none' | 'loop' | 'alternate';
3
4
  export interface TimelineEvents extends NodeEvents {
4
5
  updateCurrentTime: [current: number, delta: number];
6
+ /** 'none' 模式播放到端点自动停止时触发。 */
7
+ ended: [];
5
8
  }
6
9
  export interface Timeline {
7
10
  on: <K extends keyof TimelineEvents & string>(event: K, listener: (...args: TimelineEvents[K]) => void) => this;
@@ -22,9 +25,32 @@ export declare class Timeline extends Node {
22
25
  endTime: number;
23
26
  loop: boolean;
24
27
  paused: boolean;
28
+ /** 是否处于连续播放。下游(如 Video2D)据此区分「连续播放」与「定位/scrub」。 */
29
+ playing: boolean;
30
+ /** 当前带符号倍速(含方向:正向为正、反向为负)。由 play/advance 维护。 */
31
+ playbackRate: number;
32
+ protected _rate: number;
33
+ protected _direction: 1 | -1;
34
+ protected _loopMode: TimelineLoopMode;
35
+ get loopMode(): TimelineLoopMode;
36
+ set loopMode(mode: TimelineLoopMode);
37
+ /** 播放倍速(正数;方向由 loop 模式内部维护)。可在播放中实时调整。 */
38
+ get rate(): number;
39
+ set rate(val: number);
25
40
  static from(range: number | number[], loop?: boolean): Timeline;
26
41
  constructor(properties?: Partial<TimelineProperties>);
27
42
  setProperties(properties?: Record<string, any>): this;
28
43
  addTime(delta: number): this;
44
+ /** 开始连续播放。可选设置倍速 / loop 模式;从端点重播时回到起点。 */
45
+ play(options?: {
46
+ rate?: number;
47
+ loopMode?: TimelineLoopMode;
48
+ }): this;
49
+ pause(): this;
50
+ /**
51
+ * 按墙钟增量推进一帧(外部驱动)。处理倍速×方向、loop 模式(none 到端自停并 emit 'ended'、
52
+ * alternate 到端翻向、loop 由 addTime 回绕),并维护带符号 playbackRate。
53
+ */
54
+ advance(wallDeltaMs: number): this;
29
55
  protected _process(delta: number): void;
30
56
  }
@@ -22,6 +22,16 @@ export declare class VideoTexture extends Texture2D<HTMLVideoElement> {
22
22
  get seeking(): boolean;
23
23
  get currentTime(): number;
24
24
  set currentTime(val: number);
25
+ get paused(): boolean;
26
+ get muted(): boolean;
27
+ set muted(val: boolean);
28
+ get loop(): boolean;
29
+ set loop(val: boolean);
30
+ get playbackRate(): number;
31
+ set playbackRate(val: number);
32
+ /** 原生播放(用于跟随时间轴的连续播放,触发 requestVideoFrameCallback 高效上传)。 */
33
+ play(): void;
34
+ pause(): void;
25
35
  protected _spf: number;
26
36
  protected _autoPlay: boolean;
27
37
  protected _sourceLoad?: Promise<this>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "modern-canvas",
3
3
  "type": "module",
4
- "version": "0.24.2",
4
+ "version": "0.24.3",
5
5
  "packageManager": "pnpm@10.19.0",
6
6
  "description": "A JavaScript WebGL rendering engine. only the ESM.",
7
7
  "author": "wxm",