2017-09-19 2 views
1

Ich habe eine Android-App in Cocos2d-X, die ein WebView verwendet, um das Front-End-Menü anzuzeigen. Derzeit ist es nur ein Modell und hat nur eine URL zu einer Website, die es einfach macht zu testen.Webansicht auf Amazon Fire Stick reagiert nicht auf Controller

Wenn ich die URL der Schnittstelle in den Amazon Web App Tester auf einem Amazon Fire TV-Stick laden, funktioniert es perfekt, und Sie können die Schnittstelle glücklich mit dem Controller navigieren.

Wenn ich jedoch die App auf den Stick lade, der die gleiche URL in einer WebView-Komponente anzeigt, hat der Controller keine Wirkung und navigiert (oder markiert) nicht die Schnittstelle.

Wie kann ich das WebView wie die Webansicht in der Tester-App verhalten und auf den Controller reagieren?

+0

Nicht ganz überraschend scheint dies mit meiner Verwendung der GameControllerActivity verknüpft zu sein. Nicht hilfreich, auch wenn ich den GameController dazu zwinge, zu behaupten, dass er keine Eingaben verarbeitet hat (zB return false von allen Dispatch-Methoden), dann scheint der Web-Browser immer noch nicht damit umzugehen. –

Antwort

1

Am Ende war das Problem, dass ich die Superklassenfunktionen aufrufen musste, nicht falsch zurück, um anzuzeigen, dass ich die Eingabe nicht verarbeitet hatte. Die cocos2d-x GameControllerActivity-Klasse ist nicht dafür eingerichtet, also musste ich GameControllerActivity.java modifizieren und ein neues statisches Member hinzufügen, um anzuzeigen, wann ich wollte, dass meine App die Controller-Eingabe hat oder ob es OK war übergeben Sie es zur Verarbeitung an das WebView.

Zusätzliche Funktionen:

private static boolean smGrabJoypadInput = false; 

public static void grabJoypad() { 
    smGrabJoypadInput = true; 
} 

public static void releaseJoypad() { 
    smGrabJoypadInput = false; 
} 

Geänderte Funktionen:

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 

if (!smGrabJoypadInput) 
    return super.dispatchKeyEvent(event); 
... 

@Override 
public boolean dispatchGenericMotionEvent(MotionEvent event) { 

    if (!smGrabJoypadInput) 
     return super.dispatchGenericMotionEvent(event); 

Dann rief ich diese Funktionen über JNI, wenn ich sie brauchte.