Erst für sich, dann mit der Bedienung
Die Acht-Sekunden-Frist war geraten, und sie war die falsche Antwort auf eine richtige Beobachtung. Ein Zeitgeber entscheidet für den Zuschauer, wann er genug gesehen hat; das kann er selbst besser. Jetzt gilt für Vorspann und Abspann, Web wie App, dieselbe Regel: eine neue Marke zeigt ihre Knöpfe von selbst, ohne dass man das Bild anfassen müsste. Sobald die Bedienung einmal eingeblendet war, gehören sie zu ihr und gehen mit ihr — ein- wie ausblenden. Eine neue Marke fängt wieder von vorn an; sie ist ein neues Angebot. **Der Übergang zählt, nicht der Zustand.** Beim Start liegt die Bedienung ohnehin da, und `zeigen()` läuft im Web bei jeder Mausbewegung. Beides als „einmal gezeigt" zu werten hiesse, dem Intro seinen Knopf zu nehmen, bevor es ihn je hatte. Gewertet wird deshalb nur der Sprung von verborgen nach sichtbar. Am Ende des Films bleiben die Knöpfe stehen: dort ist „Nächste Folge" die einzige noch offene Frage, und es gibt kein Bild mehr, das sie verdecken könnten. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
820789b7f6
commit
ef667a9f39
+23
-14
@@ -381,8 +381,8 @@ export function spieler(anfrage: Spieleranfrage): void {
|
||||
//
|
||||
// Dort stand er, und damit verschwand er mit ihr — am Fernseher sieht man
|
||||
// die Leiste gar nicht, und ein Knopf, von dem niemand weiss, dass es ihn
|
||||
// gibt, ist keiner. Als eigene Schicht über dem Bild bleibt er sichtbar,
|
||||
// solange die Marke läuft.
|
||||
// gibt, ist keiner. Als eigene Schicht über dem Bild erscheint er von
|
||||
// selbst — und hängt sich an die Bedienung, sobald die einmal da war.
|
||||
// **Zwei Knöpfe, nicht einer.** Im Abspann einer Serie gibt es zwei
|
||||
// vernünftige Antworten — weiterschauen oder den Abspann überspringen —
|
||||
// und welche gemeint ist, weiss nur der Zuschauer.
|
||||
@@ -659,7 +659,8 @@ export function spieler(anfrage: Spieleranfrage): void {
|
||||
// Dort stand er, und damit verschwand er mit ihr — am Fernseher sieht man
|
||||
// die Leiste gar nicht, und ein Knopf, von dem niemand weiss, dass es ihn
|
||||
// gibt, ist keiner. Jetzt liegt er als eigene Schicht über dem Bild,
|
||||
// rechts unten, und bleibt sichtbar, solange die Marke läuft.
|
||||
// rechts unten, und erscheint von selbst — bis man die Bedienung einmal
|
||||
// eingeblendet hat, danach kommt und geht er mit ihr.
|
||||
bedienung.append(zeitleiste, unten);
|
||||
|
||||
// **Beide Nachbarn gleich zu Beginn holen.** Zwei kleine Anfragen, einmal
|
||||
@@ -841,7 +842,15 @@ export function spieler(anfrage: Spieleranfrage): void {
|
||||
* Klick mitten im Drücken zu verlieren.
|
||||
*/
|
||||
let markenstandJetzt = '';
|
||||
let markenAb = 0;
|
||||
/** Ob die Marken-Knöpfe inzwischen an der Bedienung hängen.
|
||||
*
|
||||
* **Erst für sich, dann mit der Bedienung.** Eine neue Marke zeigt ihre
|
||||
* Knöpfe von selbst — sonst müsste man erst das Bild anfassen, um das
|
||||
* Intro überspringen zu können, und dann läge die Bedienung ohnehin da.
|
||||
* Sobald man sie aber einmal eingeblendet hat, gehören die Knöpfe dazu
|
||||
* und gehen mit ihr. Keine Frist, kein Zeitgeber: der Zuschauer sagt
|
||||
* selbst, wann er genug gesehen hat. */
|
||||
let markenGebunden = false;
|
||||
let markeLaeuft = false;
|
||||
|
||||
function markenstand(jetzt: number): void {
|
||||
@@ -850,19 +859,14 @@ export function spieler(anfrage: Spieleranfrage): void {
|
||||
const weiter = abspann && naechste?.files[0] != null;
|
||||
const kennung = `${drin?.startSeconds ?? ''}|${weiter}`;
|
||||
|
||||
if (kennung !== markenstandJetzt) markenAb = performance.now();
|
||||
// Eine neue Marke ist ein neues Angebot: sie steht wieder für sich,
|
||||
// bis die Bedienung das nächste Mal auftaucht.
|
||||
if (kennung !== markenstandJetzt) markenGebunden = false;
|
||||
|
||||
// **Ein Intro ist ein Angebot, ein Abspann eine Frage.**
|
||||
//
|
||||
// „Intro überspringen" kommt von selbst und geht nach acht Sekunden
|
||||
// wieder: wer es nicht genommen hat, will zusehen, und dann gehört
|
||||
// kein Knopf über das Bild. Im Abspann ist es umgekehrt. „Nächste
|
||||
// Folge" ist das, wofür man dort überhaupt hinsieht — der bleibt
|
||||
// stehen, bis die Folge zu Ende ist.
|
||||
const bleibt = abspann || performance.now() - markenAb < 8000;
|
||||
markeLaeuft = drin != null;
|
||||
markenreihe.classList.toggle(
|
||||
'hidden', !drin || (!bleibt && schicht.classList.contains('pl-still')));
|
||||
'hidden',
|
||||
!drin || (markenGebunden && schicht.classList.contains('pl-still')));
|
||||
|
||||
if (!drin || kennung === markenstandJetzt) return;
|
||||
markenstandJetzt = kennung;
|
||||
@@ -1350,6 +1354,11 @@ export function spieler(anfrage: Spieleranfrage): void {
|
||||
|
||||
let verstecker: number | undefined;
|
||||
function zeigen(): void {
|
||||
// **Der Übergang zählt, nicht der Zustand.** `zeigen` läuft bei jeder
|
||||
// Mausbewegung, auch wenn die Bedienung längst da ist. Das jedes Mal
|
||||
// als „einmal gezeigt" zu werten hiesse, dem Intro seinen Knopf zu
|
||||
// nehmen, bevor es ihn je hatte.
|
||||
if (schicht.classList.contains('pl-still')) markenGebunden = true;
|
||||
schicht.classList.remove('pl-still');
|
||||
// Im Stehen rechnet `markenstand` nicht weiter: wer pausiert im Intro
|
||||
// die Maus bewegt, bekäme die Bedienung zurück und den Knopf nicht.
|
||||
|
||||
Reference in New Issue
Block a user