mirror of
https://github.com/mehotkhan/BandersnatchInteractive.git
synced 2025-07-27 17:23:22 +00:00
Make the left-arrow key do the reverse of the right-arrow key
Track how we got to a certain scene through persistent breadcrumbs, then follow them back to go along the path the user took.
This commit is contained in:
parent
d228a13031
commit
bc81c00be8
2 changed files with 40 additions and 6 deletions
|
@ -329,6 +329,10 @@ function playNextSegment() {
|
|||
nextSegment = segmentId;
|
||||
}
|
||||
|
||||
let breadcrumb = 'breadcrumb_' + nextSegment;
|
||||
if (!(breadcrumb in ls))
|
||||
ls[breadcrumb] = lastSegment;
|
||||
|
||||
segmentTransition = true;
|
||||
let segment = nextSegment;
|
||||
nextSegment = null;
|
||||
|
@ -341,7 +345,7 @@ function jumpForward() {
|
|||
|
||||
var interactionMs = 0;
|
||||
let moments = momentsBySegment[segmentId] || [];
|
||||
// Find the earliest moment within this segment
|
||||
// Find the earliest moment within this segment after cursor
|
||||
for (let m of moments)
|
||||
if (m.startMs >= ms && (interactionMs == 0 || m.startMs < interactionMs))
|
||||
interactionMs = m.startMs;
|
||||
|
@ -356,10 +360,40 @@ function jumpForward() {
|
|||
function jumpBack() {
|
||||
var ms = getCurrentMs();
|
||||
var segmentId = getSegmentId(ms);
|
||||
var startMs = getSegmentMs(segmentId);
|
||||
var previousSegment = getSegmentId(startMs - 1000);
|
||||
console.log('jumpBack from-to', segmentId, previousSegment);
|
||||
playSegment(previousSegment);
|
||||
let segment = segmentMap.segments[segmentId];
|
||||
|
||||
var interactionMs = 0;
|
||||
let moments = momentsBySegment[segmentId] || [];
|
||||
let inMoment = false;
|
||||
// Find the latest moment within this segment before cursor
|
||||
for (let m of moments) {
|
||||
if (m.endMs < ms && m.startMs > interactionMs)
|
||||
interactionMs = m.startMs;
|
||||
if (m.startMs != segment.startTimeMs && m.startMs <= ms && ms < m.endMs)
|
||||
inMoment = true;
|
||||
}
|
||||
|
||||
if (interactionMs) {
|
||||
seek(interactionMs);
|
||||
} else if (inMoment) {
|
||||
seek(segment.startTimeMs);
|
||||
} else {
|
||||
let breadcrumb = 'breadcrumb_' + segmentId;
|
||||
if (breadcrumb in ls) {
|
||||
// Jump to last moment in previous segment
|
||||
segmentId = ls[breadcrumb];
|
||||
segment = segmentMap.segments[segmentId];
|
||||
|
||||
interactionMs = segment.startTimeMs;
|
||||
let moments = momentsBySegment[segmentId] || [];
|
||||
for (let m of moments)
|
||||
if (m.startMs > interactionMs)
|
||||
interactionMs = m.startMs;
|
||||
seek(interactionMs);
|
||||
} else {
|
||||
seek(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function toggleFullScreen() {
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
<li><kbd>F</kbd> - Toggle fullscreen</li>
|
||||
<li><kbd>R</kbd> - Restart video</li>
|
||||
<li><kbd>→</kbd> - Jump to the next segment (or to the next interaction zone)</li>
|
||||
<li><kbd>←</kbd> - Jump to the previous segment</li>
|
||||
<li><kbd>←</kbd> - Jump to the previous segment (or interaction zone)</li>
|
||||
<li><kbd>Space</kbd> - Toggle play and pause</li>
|
||||
|
||||
</ul>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue