You are not logged in.

1

Thursday, May 3rd 2012, 3:00pm

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:

Source code

1
2
3
4
5
6
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:

Source code

1
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.

iceman_fx

Professional

Posts: 602

Location: Sachsen

Occupation: Webdesigner- und entwickler sowie Fotodesigner

  • Send private message

2

Thursday, May 3rd 2012, 8:23pm

Ist jetzt offtopic, aber was nutzt Du als Framework für phonegap (jquery mobile, sencha, ...) und in welcher Reihenfolge hast Du die Einbindung der ganzen Skripte vorgenommen?

Ich hatte das auch schon einmal mit jqmobile probiert, aber da wurde mir kein Pano mehr angezeigt.

3

Friday, May 4th 2012, 12:35pm

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.

4

Friday, May 4th 2012, 7:08pm

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:

Source code

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


HTML/JS:

Source code

1
2
3
4
function viewer_ready()
{
  // ... the krpano viewer is ready now for receiving any calls
}


Schöne Grüße,
Klaus