call, set und get: Unterschied zwischen Javascript- und Flashversion?

  • Hallo,

    ich habe einen Krpano in eine PhoneGap eingebettet, das funktioniert perfekt unter iOS, leider macht Android Probleme.

    Eingebunden wird das Panorama folgendermaßen:

    Code
    var viewer = createPanoViewer({
    	swf: 'lib/krpano/krpano.swf',
    	target: 'krpano_pano',
    	xml: 'pano/pano.xml'
    });
    viewer.embed();

    Die notwendigen Dateien (swfkrpano.js, krpanoiphone.license.js, krpanoiphone.js) sind eingebunden, die krpano.license liegt neben der krpano.swf.

    In der XML sind sehr viele Szenen enthalten, die wie folgt angesprochen werden:

    Code
    document.getElementById('krpanoSWFObject').call('loadscene(' + this.scene + ')');

    Auf dem Android-Gerät oder im Browser, kurz sobald die Flashversion geladen wird, ist „call“ undefined. Das „call“ wird durch den Nutzer ausgelöst und egal wie viel Zeit verstreicht, die Funktion scheint nie an das DOM-Element angehängt zu werden, sie bleibt immer undefined.

    Verhalten sich die Javascript- und die Flash-Version hier unterschiedlich?
    Wie kann ich sicherstellen, dass der Viewer komplett geladen ist, bevor der Nutzer ein Panorama aufrufen kann?

    Vielen Dank im voraus.

  • Ich nutze Enyo , die Ladereihenfolge scheint aber sowohl im generierten HTML als auch laut Netzwerk-Konsole zu stimmen. Zuerst wird Enyo geladen, dann Cordova/PhoneGap, dann die Krpano-Dateien und zum Schluss die App-bezogenen Dateien. Die HTML5-Version funktioniert ja auch, nur die Flashversion leider nicht.

  • Hi,

    Verhalten sich die Javascript- und die Flash-Version hier unterschiedlich?

    Nein, die Schnittstellen selbst sind gleich, es kann allerdings sein, das die Flash Version etwas länger benötigt bis alles geladen und bereits ist.

    Bzgl. Flash innerhalb von Apps lokal auf Android - eventuell gibt es hier, ähnlich wie auf dem Desktop, auch Einschränkungen bzgl. der Verwendung der Javascript (ExternalInterface) Schnittstelle - dazu kann ich allerdings mangels App-Erfahrung wenig sagen... krpano-seitig gibt es allerdings keine Einschränkungen diesbezüglich.

    Wie kann ich sicherstellen, dass der Viewer komplett geladen ist, bevor der Nutzer ein Panorama aufrufen kann?

    Die sicherste Methode dazu wäre ein 'Callback' von der XML aus zurück zu Javascript, z.B. im onstart Event der Aufruf einer Javascript Funktion, welche dann dem restlichen Framework mitteilt das der Viewer bereits ist.

    z.B.
    XML:

    Code
    <krpano onstart="js( viewer_ready() );">
    ...

    HTML/JS:

    Code
    function viewer_ready()
    {
      // ... the krpano viewer is ready now for receiving any calls
    }

    Schöne Grüße,
    Klaus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!