diff options
| author | lonkaars <loek@pipeframe.xyz> | 2021-05-20 11:40:24 +0200 | 
|---|---|---|
| committer | lonkaars <loek@pipeframe.xyz> | 2021-05-20 11:40:24 +0200 | 
| commit | c4923c2a1f37c735f869ea91cd375bfd67ffd02c (patch) | |
| tree | 728c87d4acd6da9bc2482f3f3efa0405107b0d3a | |
| parent | 45f5435761612dd6c171b47e4e3a948128501ffe (diff) | |
use CustomEvent instead of janky TimedVideoPlayer.onframe method
| -rw-r--r-- | pages/editor.tsx | 7 | ||||
| -rw-r--r-- | pages/present.tsx | 12 | 
2 files changed, 13 insertions, 6 deletions
diff --git a/pages/editor.tsx b/pages/editor.tsx index 81a0c66..cb68601 100644 --- a/pages/editor.tsx +++ b/pages/editor.tsx @@ -63,10 +63,9 @@ function TimelineEditor(props: {  		var canvas = document.getElementById('timeScaleCanvas') as HTMLCanvasElement;  		var ctx = canvas.getContext('2d'); -		function onframe(frame: number) { -			setFrame(frame); -		} -		props.player.onframe = onframe; +		props.player.addEventListener('TimedVideoPlayerOnFrame', (event: CustomEvent) => { +			setFrame(event.detail); +		});  		var css = (varname: string) => getComputedStyle(document.body).getPropertyValue(varname).trim();  		var baseColor = css('--c100'); diff --git a/pages/present.tsx b/pages/present.tsx index 085a99c..7c618a2 100644 --- a/pages/present.tsx +++ b/pages/present.tsx @@ -22,7 +22,6 @@ export class TimedVideoPlayer {  	registeredEventListeners: boolean;  	frame: number;  	framerate: number; -	onframe?: (frame: number) => void;  	constructor() {  		this.slide = -1; @@ -103,6 +102,14 @@ export class TimedVideoPlayer {  		}  	} +	addEventListener(name: string, callback: (...args: any[]) => void) { +		return document.addEventListener(name, callback, false); +	} + +	dispatchEvent(event: CustomEvent) { +		return document.dispatchEvent(event); +	} +  	registerEventListeners() {  		if (  			!this.video @@ -119,7 +126,8 @@ export class TimedVideoPlayer {  			var lastFrame = this.frame;  			this.frame = this.timestampToFrame(this.player.currentTime); -			if (this.frame != lastFrame && this.onframe) this.onframe(this.frame); +			var event = new CustomEvent('TimedVideoPlayerOnFrame', { detail: this.frame }); +			this.dispatchEvent(event);  			var slide = this.timeline.slides[this.slide];  			if (!slide) return;  |