Wie man in den Screenshots unten in der Frage sehen oder gehen kann direkt zum Spiel . Text wird je nach Browser unterschiedlich platziert (Firefox 15.0.1 rendert anders als IE 9.9 und Chrome 21). Aufruf zum Zeichnen der Funktion:
%Vor%Konstruktor des Objekts:
%Vor%text, xcoorc, ycoord, xsize, ysize werden aus einer XML-Datei analysiert. Der Komponentenname in diesem Beispiel:
%Vor%style ist ein definierter Wert, der auf den gewünschten Texteffekten basiert, und context ist der 2d-Kontext der Zeichenfläche, auf die gezeichnet werden soll (für Ebeneneffekte).
Wie gezeigt, sind alle Werte zwischen den Browsern identisch. Die einzige Überprüfung zwischen Browsern ist
%Vor%in der Kopfzeile der HTML-Seite.
Ich weiß wirklich nicht, woher die Linienhöhendiskrepanz kommt, und jede Hilfe in dieser Angelegenheit wäre willkommen.
Die Zeilenhöhendiskrepanz ändert sich abhängig vom Text, aber nicht in einer Weise, die ich bisher herausgefunden habe. Wenn es irgendwelche Informationen gibt, die ich weggelassen habe, zögern Sie bitte nicht zu fragen. ff: ff Bildschirm http://www.sunshinecompound.com/images/firefoxscreen.png Chrom: Chrome-Bildschirm http://www.sunshinecompound.com/images/googlescreen.png
Update Die Lösung für mein Programm bestand zumindest darin, einen Offset zu verwenden. Außerdem habe ich enorme Leistungssteigerungen erzielt, indem ich das Textobjekt erstellt und das Textobjekt dann als Bild gespeichert habe. In FF, dem Browser mit der größten Verlangsamung, habe ich ein wenig mehr als eine 5-fache Verringerung der gesamten Programmlaufzeit gesehen. Dies ist trotz der Tatsache, dass das Textobjekt jedes Mal neu erstellt werden muss, wenn Text im Programm dynamisch geändert wird (ich ändere dynamische Zähler pro Sekunde und Maus-Hover-Effekte alle 200ms, aber mit der Leistung, die ich gerade erhalte, kann ich diese auf 100ms verbessern). p>
Ja.
Es ist anders platziert, anders skaliert, mit Unterschneidungen versehen, anders formatiert und sogar unterschiedlich (wie in measureText
) zwischen Browsern gemessen.
Wenn Sie für Ihr Spiel Pixel-Konsistenz benötigen, müssen Sie Bilder anstelle von Text verwenden. Es tut uns leid. : (
Die einzige Möglichkeit, measureText
konsistent zu machen, ist die Vorberechnung.
Die einzige Möglichkeit, fillText
konsistent zu machen, besteht darin, Bilder anstelle von Text zu verwenden. Es muss sowieso schneller sein .
Beide sind unhaltbar, wenn der Text extrem dynamisch ist, aber wenn Sie immer nur sagen, weniger als 100 verschiedene Textteile in Ihrer App, sind Bilder wahrscheinlich die beste Wahl.
Andernfalls können Sie eine aus einem Bild generierte Pixelschrift verwenden (verwenden Sie drawImage mit jedem Buchstaben oder einem gemeinsamen Wort) und hoffen auf eine gute Leistung, indem Sie die längeren gemeinsamen Strings zwischenspeichern.
Tags und Links javascript internet-explorer canvas firefox