2016-04-07 14 views
1

Arbeiten an Canvas Mobile Spiel mit CreateJS-Bibliothek. Alles läuft reibungslos mit Ausnahme dieses Problems:Canvas Element ist in Chrome nach Lockscreen unsichtbar

Wenn ich den Browser mit der Home-Taste oder sperren Sie das Telefon, nach Sperrbildschirm oder Neustart des Browsers, Canvas Element ist unsichtbar. Aktualisieren löst das Problem.

Ich habe versucht, Chrom Element Inspektor und wie Sie auf dem Screenshot sehen können, existiert Element und es ist auf der richtigen Position. Ich weiß nicht, warum es unsichtbar ist.

Irgendwelche Ideen?

enter image description here

+0

Wahrscheinlich die Leinwand als die Größe neu bestimmt worden ist, oder die innerHTML- eines seiner Eltern bearbeitet wurden. – Kaiido

+0

Ich habe eine Funktion, die Canvas bei Änderung der Fenstergröße - um Canvas-Position zu optimieren. Dies betrifft jedoch nur die Breite/Höhe der Leinwand und die Eigenschaften oben/links. Wie Sie auf dem Bildschirm sehen können, ist die Position des Canvas-Elements korrekt. Es lässt mich glauben, dass die Transparenz-Eigenschaft auf 0 gesetzt ist. Aber das ist es nicht. Hast du noch andere Varianten, warum passiert das? – zur4ik

+0

Wenn Sie die Canvas mit ihren 'width'- und' height'-Eigenschaften wie gewünscht anpassen, werden der Canvas-Bereich und alle zugehörigen Eigenschaften gelöscht. Sie müssen dann alles neu zeichnen. Wenn Sie die Größe mit CSS ändern, ist das schlecht, aber es ist ein Fehler, den die Leinwand löscht. – Kaiido

Antwort

1

Wenn Sie die Pixel greifen, werden Sie feststellen, dass es tatsächlich noch da ist. Dies ist möglicherweise ein Fehler in Chrome 49/50 (für den ich versuche, eine akzeptable Problemumgehung zu finden).

Wenn Sie die Leinwandbreite auf 0 und dann wieder auf die richtige Größe ändern, oder drehen Sie Ihr Gerät ein paar Mal oder drücken Sie die Schaltfläche "Running Tabs" und tauschen Sie es wieder aus, dass es wieder sichtbar sein wird.

Es scheint einige Hibernate Problem mit der Hardware-Beschleunigung zu sein:/

+0

Sieht aus, als hättest du mir die beste Erklärung gegeben :) – zur4ik

+0

Kein Problem - Wenn ich eine Lösung finde, die funktioniert, werde ich hier posten. Momentan höre ich nach einem Tab-Schalter-Event, nehme alle Leinwände im DOM, nehme die Größe + Größe auf 0 und zurück. Bei einigen Tests greifen wir auch auf die Pixel zu, skalieren die Größe und malen dann den Inhalt zurück Dies bedeutet, dass bei jedem Malzyklus der Kontext neu erfasst und alle Transformationen erneut angewendet werden müssen. Dies ist nicht ideal für mich, da ich derzeit 100 Spiele mit einem "Fix" patchen möchte. Schlechte Zeiten :) –