Hi,
bei den Examples der Version 1.0.7 gibt es ein Tour-Beispiel. Dieses habe ich selbst als Grundlage für meine Touren verwendet. Warum das bei den folgenden Version nicht mehr dabei ist, ist mir rätselhaft.
ich würde aktuell eher die "scenes-with-*" Bespiele empfehlen, z.B. das "scenes-with-imagemap" Beispiel,
das "tour" Beispiel der Version 1.0.7 würde ich nicht mehr empfehlen, in der 1.07er Version gab es noch kein "parent",
dadurch gab es für jedes Pano noch eine eigne Action wo die X/Y Werte des aktuellen Spots und Radars neu gesetzt werden mussten,
und beim Ein-/Ausblenden musste jedes Element einzeln ein-/ausgeblendet werden,
und weiters finde ich die "moveto*,startloading,loadingdone" Actions verwirren in dem Beispiel doch eher...
in dem "scenes-with-imagemap" Beispiel ist das (meiner Meihung nach) besser, einfacher und übersichtlicher gelöst,
ich werde aber versuchen in der nächsten Version ein noch einfachere Tour Beispiele mit zuliefern (nur mit einfacher Karte, ohne Maske, ohne Radar, ...),
@Klaus (panocanarias)
ich habe dir bereits auf deine Mail geantwortet, möchte die Erklärungen dazu gerne aber noch noch einmal posten (etwas überarbeitet), eventuell hilft das auch dem ein oder anderem,
nun zu den Antworten zu deinen Fragen:
bzgl. Touren, XML und Szenen (<scene> Knoten):
es gibt im Prinzip keine vordefinierte 'Tour' oder so, es gibt immer nur die Möglichkeit ein anderes Pano zu laden,
dabei gibt es z.B. folgende Möglichkeiten: (und auch noch weitere),
- eine neue XML Datei zu laden
- oder in einer XML mehrere Szenen zu definieren
das Prinzip dahinter ist genau das gleiche,
eine neue XML wird z.B. mit -
loadpano(neuexml.xml) - geladen,
eine neue Szene mit -
loadscene(name-der-szene)
die Szene wird innerhalb der XML mittels:
|
Source code
|
1
2
3
|
<scene name="name-der-szene">
...
</scene>
|
definiert,
der Inhalt des
<scene> Knotens entspricht dabei genau dem Inhalt einer externen XML, nur eben innerhalb der einen XML,
d.h. innerhalb dessen kann ein kompletter krpano XML Baum erneut definiert werden, sogar neue <scene> Knoten wären darin möglich,
als kleine Nebenanmerkung - wird eine normale XML geladen, wird nicht automatisch auch eine Szene geladen, die ist einfach nur Teil der XML Datei, zum Laden einer Szene muss explizit der
loadscene() Befehl verwendet werden,
das Panoramabild selbst wird immer per
<image> Knoten definiert (und das Preview per <preview>),
in den mitgelieferten Beispielen verwende ich hierbei, aus Platzgründen, oft nur ein kleines "Cubestrip" Pano,
es kann hier jedes beliebige Pano verwendet werden, z.B. das Pano per Tools Droplet erstellen und dann
den kompletten <image> (und <preview>) Knoten umkopieren,
als Beispiele - so könnte eine Tour also aussehen:
tour.xml:
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<krpano onstart="loadscene(scene1);">
<scene name="scene1">
<image> ... </image>
</scene>
<scene name="scene2">
<image> ... </image>
</scene>
...
</krpano>
|
der
<krpano> Knoten selbst enthält dabei kein Pano (was aber möglich wäre),
stattdessen wird sofort zu Start, mittels dem "onstart" Event, gleich eine Szene geladen,
oder die Tour könnte auch aus mehrere XML Dateien bestehen,z.B. so:
pano1.xml:
|
Source code
|
1
2
3
4
|
<krpano>
<image> ... </image>
</krpano>
|
pano2.xml:
|
Source code
|
1
2
3
|
<krpano>
<image> ... </image>
</krpano>
|
von einer XML zur nächsten oder bzw. von einer Szene zur nächsten gehts dann nur über einen loadpano() oder loadscene() Aufruf,
jetzt zu Bilder, Buttons, Hotpots, dem "keep" und dem MERGE:
Bilder welche auf dem Bildschirm platziert werden sollen, werden per
<plugin> Tag eingebunden,
der Name "Plugin" ist hier aber leider etwas unpassend, hat sich historisch so ergeben,
z.B.
|
Source code
|
1
2
3
4
5
6
7
8
9
|
<plugin name="logo"
url="logo.png"
align="rightbottom"
x="10"
y="10"
onclick="openurl('http://krpano.com');"
keep="true"
/>
|
- mittels "name" wird der interne Name festgelegt, über diesen Namen kann das Bild dann z.B. später interaktiv angesprochen werden
- mit "url" wird der Pfad zum Bild festgelegt
- und mittels align, x, y, die Ausrichtung und der Abstand von dem Ausrichtungspunkt (align),
- bei "onclick" lassen sich krpano Aktionen angeben, welche bei Klick dann ausgeführt werden,
zu dem
"keep" - wird ein neues Pano geladen, dann werde alle aktuellen <plugin> und <hotspot> Element wieder entfernt, und die <plugin> und <hotspot> Elemente des neuen Panos geladen,
mittels -
keep="true" (der Defaultwert ist "false") - kann aber festgelegt werden, das dieses Element nicht entfernt werden soll, d.h. dieses Element bleibt auch nach einem loadpano() Befehl noch erhalten,
das kann z.B. für statische/globale Dinge, wie z.B. Logos oder Steuerungsbuttons verwendet werden,
z.B. wenn eine Tour mit Szenen verwendet wird, könnte das XML dann so aussehen:
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<krpano onstart="loadscene(scene1);">
<plugin name="logo" ... keep="true" />
<plugin name="button" ... keep="true" />
<scene name="scene1">
<image> ... </image>
...
</scene>
<scene name="scene2">
<image> ... </image>
...
</scene>
...
</krpano>
|
die "logo" und "button" Grafik blieben hier also durch das - keep="true" erhalten,
wäre hier kein keep="true" würden die Grafiken nur kurz aufscheinen und danach sofort durch das Laden der Szene wieder verschwinden,
werden innerhalb einer <scene> auch <plugin> Elemente definiert, dann werden die nach dem Laden der Szene angezeigt, wenn aber kein keep="true" dafür definiert ist, mit dem nächsten Laden wieder entfernt,
so kann z.B. zwischen globalen und lokalen Elemente unterschieden werden,
z.B. Hotspots werden in den meisten Fällen lokale Elemente sein, außer z.B. ein Nadir Logo, welches für alle Panos einer Tour gleich bleiben soll,
jetzt eine Anmerkung zu dem
MERGE im loadpano/loadscene Aufruf:
z.B. oft sieht das so oder so ähnlich aus:
|
Source code
|
1
|
loadscene(scene1, null, MERGE, BLEND(1));
|
ist ein Element mit keep="true" sowohl im aktuellen Pano als auch im nächsten Pano definiert, z.B. dadurch das diese Elemente in jedem Pano immer wieder per <include> eingebunden werden, dann würde die erneuerliche Definition dieses Elements die aktuellen Einstellungen überschrieben,
z.B. es gibt einen "Fullscreen" und einen "Exit Fullscreen" Button (beide mit keep="true"),
im Ausgangszustand ist der "Fullscreen" Button sichtbar und der "Exit Fullscreen" Button unsichtbar (aufgrund der Definition in der XML),
wird jetzt diese XML Definition erneut geladen (ohne MERGE), dann werden diese Buttons wieder auf diese XML Definition 'zurückgesetzt', würde man sich aber gerade im Fullscreen Modus befinden, dann wären die Buttons jetzt aber falsch,
deshalb gibt es den MERGE Parameter - dadurch werden alte und neue Elemente vermischt,
d.h. die alten Elemente mit keep="true" bleiben bestehen wie sie aktuelle sind, und nur die neuen Elemente werden geladen,
das wären einmal die Grundlagen dazu, weitere Fragen sind gerne willkommen!
Schöne Grüße,
Klaus