以 "dateless" 的方式使用 vis.js 时间轴(例如视频编辑时间轴)
Use vis.js timeline in a "dateless" way (e.g. video edit timeline)
我想知道是否可以使用 vis.js' 时间轴图表构建一个界面,用于放置来自 <video>
元素的一些关键帧。
我发现其他一些库更接近我正在寻找的东西,例如 timeline.js, or tweentime,但它们作为动画界面更紧密,对我的需求来说太过分了。我只需要放置具有 (t,x,y) 值的关键帧并以友好的方式显示它们。
问题是 vis.js 将时间轴的 'start' 和 'end' 设置为 Date
对象,但我需要的是 dateless ,刚好从 0 到 'n' 秒。我不太清楚如何使用 Date
实现此目的,因为这是 vis.js 使用的方法。
关于如何构建这个的任何想法,或者我无法找到更接近我的方法的替代方案?
vis.js 的时间轴是以模块化方式构建的,因此您可以创建使用当前 TimeAxis 以外的其他轴的时间轴版本。不过,它需要深入研究代码。
您可以将时间轴与以下在 jsfiddle 中明确共享的配置一起使用:https://jsfiddle.net/supereye/7j02Legx/9/
它将为您提供如下界面:
您可以使用以下选项进行此设置:
var start = new Date(1970, 0, 1, 0, 0, 0, 0);
var end = new Date(1970, 0, 1, 0, 1, 0, 0);
var options = {
width: "500px",
height: "100px",
align: "box",
groupHeightMode:'fixed',
maxMinorChars : 2,
zoomKey: "ctrlKey",
horizontalScroll: true,
verticalScroll: true,
orientation: "top",
moveable: true,
zoomable : true,
editable: true,
min: start,
max: end,
start: start,
end: end,
zoomMax: 10000000,
zoomMin: 1000,
stack:false,
multiselect: true,
multiselectPerGroup: true,
editable: {
add: true,
updateTime: true,
updateGroup: true,
remove: true,
overrideItems: true
},
onRemove: function(item, callback) {
callback(item);
},
onMove: function(item, callback) {
callback(item);
},
onMoving: function(item, callback) {
let currentItem = timeline_items.get(item.id);
if (item.start < limit_min) item.start = limit_min;
callback(item);
},
rollingMode: {
follow: false,
offset: 0.5
},
};
我想知道是否可以使用 vis.js' 时间轴图表构建一个界面,用于放置来自 <video>
元素的一些关键帧。
我发现其他一些库更接近我正在寻找的东西,例如 timeline.js, or tweentime,但它们作为动画界面更紧密,对我的需求来说太过分了。我只需要放置具有 (t,x,y) 值的关键帧并以友好的方式显示它们。
问题是 vis.js 将时间轴的 'start' 和 'end' 设置为 Date
对象,但我需要的是 dateless ,刚好从 0 到 'n' 秒。我不太清楚如何使用 Date
实现此目的,因为这是 vis.js 使用的方法。
关于如何构建这个的任何想法,或者我无法找到更接近我的方法的替代方案?
vis.js 的时间轴是以模块化方式构建的,因此您可以创建使用当前 TimeAxis 以外的其他轴的时间轴版本。不过,它需要深入研究代码。
您可以将时间轴与以下在 jsfiddle 中明确共享的配置一起使用:https://jsfiddle.net/supereye/7j02Legx/9/
它将为您提供如下界面:
您可以使用以下选项进行此设置:
var start = new Date(1970, 0, 1, 0, 0, 0, 0);
var end = new Date(1970, 0, 1, 0, 1, 0, 0);
var options = {
width: "500px",
height: "100px",
align: "box",
groupHeightMode:'fixed',
maxMinorChars : 2,
zoomKey: "ctrlKey",
horizontalScroll: true,
verticalScroll: true,
orientation: "top",
moveable: true,
zoomable : true,
editable: true,
min: start,
max: end,
start: start,
end: end,
zoomMax: 10000000,
zoomMin: 1000,
stack:false,
multiselect: true,
multiselectPerGroup: true,
editable: {
add: true,
updateTime: true,
updateGroup: true,
remove: true,
overrideItems: true
},
onRemove: function(item, callback) {
callback(item);
},
onMove: function(item, callback) {
callback(item);
},
onMoving: function(item, callback) {
let currentItem = timeline_items.get(item.id);
if (item.start < limit_min) item.start = limit_min;
callback(item);
},
rollingMode: {
follow: false,
offset: 0.5
},
};