[Monkey] [HTML5] GetChar liefert keine Umlaute
Übersicht

![]() |
RatchetBetreff: [HTML5] GetChar liefert keine Umlaute |
![]() Antworten mit Zitat ![]() |
---|---|---|
GetChar gibt keine Umlaute zurück. Der Beispielcode aus der Hilfe zu GetChar zeigt dies ganz klar.
BlitzMax: [AUSKLAPPEN] Import mojo |
||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das hat nichts mit Monkey zu tun, sondern mit dem Umstand dass die JavaScript Methode String.fromCharCode() nicht in der Lage ist ein komplettes UTF-8 zurückzugeben. Ein Umstieg auf MonkeyX Pro wird heir auch nichts bringen, da dort dieselbe Methode verwendet wird.
Teilweise Lösung: Folgenden JavaScript Code als getChar.js sichern... Code: [AUSKLAPPEN] function fromCode(c){ return String.fromCodePoint(c); } Hier der Code der teilweise mit obigem Script funktioniert: BlitzBasic: [AUSKLAPPEN]
In der Konsole siehst Du dass die Zeichen jetzt korrekt zurückgegeben werden. Allerdings hast Du weiterhin das Problem dass DrawText den originalen Bitmapfont (mojo_font.png) verwendet, in welchem keine Sonderzeichen existieren. Hier bleibt Dir nur der Umweg über ein Third-Party Modul wie AngelFont. |
||
![]() |
Ratchet |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke, werde ich testen. Für die Textausgabe nutze ich eh GLText aus dem Diddy-Modul, daher sollte die reine Darstellung von Umlauten kein Problem sein.
Unterstützen andere Targets denn UTF-8? EDIT: Funktioniert leider nicht, es kommen trotzdem keine Umlaute an. GetChar gibt ja schon keinen Code zurück bzw 0, wenn ich einen Umlaut tippe. NOCHMAL EDIT: Ich habe jetzt im Template des HTML5 Targets in der html5game.js die letzte Zeile in canvas.onkeydown auskommentiert, dann bekomme ich auch meine Umlaute: Code: [AUSKLAPPEN] canvas.onkeydown=function( e ){
game.KeyEvent( BBGameEvent.KeyDown,e.keyCode ); var chr=keyToChar( e.keyCode ); if( chr ) game.KeyEvent( BBGameEvent.KeyChar,chr ); //if( e.keyCode<48 || (e.keyCode>111 && e.keyCode<122) ) eatEvent( e ); } Die Logik dahinter verstehe ich eh nicht ganz. Das < 48 (0) kann ich ja noch verstehen, aber warum > 111 (o) und < 122 (z)? Warum zwischen o - z (111 - 122)? |
||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Code den Du da zeigst ist das Ende der Kette. Ganz am Anfang steht eine JavaScript Funktion in \modules\monkey\native\lang.js. Dort wird die Javascript String-Methode fromCharCode verwendet welche keine Umlaute liefert.
Mein Beispiel oben habe ich getestet und es funktioniert. |
||
Farbfinsternis.tv |
![]() |
Ratchet |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem ist Firefox. Der behandelt die onKeyPress, onKeyDown und onKeyUp Events anders als IE oder andere.
Sehr schön zu testen hier -> http://www.asquare.net/javascr...yCode.html In Safari klappt dein Code nämlich tatsächlich. Ist aber doof, wenn nur meine Firefox-User keine Umlaute eintippen können :/ |
||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Problem gelöst:
Javascript: Code: [AUSKLAPPEN] var lastKey = ''; window.addEventListener('load', function(){ document.addEventListener('keyup', function (e) { lastKey = e.key; }); }); function getKeyChar(){ var result = lastKey; lastKey = ''; return result; } Monkey: Code: [AUSKLAPPEN] #If LANG="js" Import "getChar.js" #EndIf Import mojo Class MyApp Extends App Field text$="Type something:" Method OnCreate() SetUpdateRate 30 End Method OnUpdate() Repeat Local char:String = KeyChar() If Not char Exit text+= char Print char Forever End Method OnRender() Cls DrawText text,0,0 End End Function Main() New MyApp End Extern Function KeyChar:String() = "getKeyChar" |
||
Farbfinsternis.tv |
![]() |
Ratchet |
![]() Antworten mit Zitat ![]() |
---|---|---|
Funktioniert unter Firefox nicht | ||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich würde den keyCode oder charCode aus dem Event nutzen, vielleicht funktioniert es dann? | ||
Windows 7 Home Premium 64bit
CPU: Intel Core i5 3450 Ivy Bridge GPU: HIS HD 4870 1GB GDDR5 RAM: 4x 4GB DDR3-SDRAM Dual Channel |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group