You are not logged in.

elexx

Beginner

  • "elexx" started this thread

Posts: 24

Location: Werdau / Westsachsen

  • Send private message

1

Sunday, August 15th 2010, 12:16pm

Szenen und "onstart"

Hallo,
ich bin neu mit krpano und habe gerade mein erstes Projekt abgeschlossen, ohne dass ich das Forum gebraucht habe ;-) , siehe http://www.ibug-art.de/virtuatour/ibug2010.html

Bei einer neuen Sache stoße ich jetzt aber auf ein Problem, bei dem mich mal bitte jemand mit der Nase auf die prinzipielle Verfahrensweise stoßen muss. Ich habe eine rundgang1.xml, in der sind mehrere Szenen angelegt:

Source code

1
2
3
4
5
6
<krpano version="1.0.8" onstart="loadscene(sc5911)">
<include url="skin/defaultskin.xml" />
<scene name="sc5911">  ... </scene>
<scene name="sc5935">  ... </scene>
<scene name="sc5956">  ... </scene>
</krpano>


Mit dem "onstart=loadscene("-Aufruf wird auch die richtige Szene geladen, kein Problem.

Ich möchte nun nach dem Laden der ersten Szene (und nur dann!) eine kurze Erklärung/Bedienungsanleitung in Textform einblenden, die aber auch für die weiteren Projekte rundgang2.xml, rundgang3.xml .. gelten soll und deshalb sinnvollerweise in die includete defaultskin.xml gehört.

dazu steht in der defaultskin.xml:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<krpano version="1.0.8" onstart="autoexecbat" >

<data name="infotext">Bewege das Bild mit der Maus![br]Move the picture with your Mouse!</data>

<textstyle name="infostyle"
origin="center" edge="center" yoffset="-39" textalign="center" background="false" border="false"
font="courier"
fontsize="80" textcolor="0xFFFFFF" bold="false" effect="glow(0xFFFFFF,0.7,4,2);glow(0x000000,1,4,2);
dropshadow(3,45,0x000000,2,0.6);" showtime="5.0" fadeintime="1.0" fadetime="2.0"
/>

<action name="autoexecbat">
<!-- Erklaerungstext einmalig nach Laden des Panos -->
showtext(get(data[infotext].content), infostyle);
</action>
</krpano>


Funktioniert auch. Die Action "autoexecbat" *tongue* wird aufgerufen, und der Text wird einmalig nach dem Start angezeigt, nach dem Laden einer weiteren Szene dagegen nicht.

Wie kombiniere ich nun beide Events sinnvoll?
Es wird ja nur das Event aus der defaultskin.xml ausgeführt, weil dieses das erste aus der rundgang1.xml überschreibt - es erscheint also die Erklärung, die erste Szene wird aber nicht geladen, der Bildschirm bleibt schwarz.
Wenn ich in der defaultskin.xml in die Action "autoexecbat" "loadscene(startscene)" schreibe, wirds wahrscheinlich gehen, aber das setzt ja voraus, dass es in jedem Projekt, das die defaultskin.xml benutzt, eine Szene "startszene" gibt, dem ist aber nicht so.

Ich hoffe, ich habs verständlich erklärt,

Grüße Steffen

This post has been edited 2 times, last edit by "elexx" (Aug 16th 2010, 7:40pm)


elexx

Beginner

  • "elexx" started this thread

Posts: 24

Location: Werdau / Westsachsen

  • Send private message

2

Monday, August 16th 2010, 7:39pm

Hat denn dazu keiner eine Antwort?
Oder unverständlich erklärt?
Oder ganz falscher Denkansatz?

Wie kombiniere ich zwei nötige "onstart="-Aufrufe, einen in der default.xml und einen im jeweiligen Rundgang?

3

Tuesday, August 17th 2010, 2:49pm

Hallo Steffen,

mit scenes arbeite ich normalerweise nicht. Spielt aber hier auch keine Rolle *rolleyes*

Ich würde Dein Problem etwas anders angehen. Die onstart in Deiner rundgang.xml ist schon OK. Die <krpano ...> Section in der defaultskin.xml aber ist sinnlos bzw. überschreibt die zuvor gelesene Anweisung. Es kann eben nur eine <krpano> geben ...

Deine autoexecbat würde ich über das event onxmlcomplete starten. Du müsstest Dir dann z.B. über eine Variable dann nur noch merken, ob es der erste oder ein Folgeaufruf ist und mit einem if-Statement den Rest entsprechend steuern.

also so z.B.

Datei rundgang1.xml

Source code

1
2
3
<krpano ...
<events onxmlcomplete	= "autoexecbat();"
...


Datei defaultskin.xml

Source code

1
2
3
4
5
6
7
8
<!-- kein <krpano etc !!!  -->

<action name="autoexecbat">
if (varMerker !== null,
   showtext(get(data[infotext].content), infostyle);
   set(varMerker, 1);
);
</action>


Viele Grüße

Sepp
Virtuelle Rundgänge in den bayerischen Schlössern, Gärten und Seen: http://www.schloesser-bayern.com

elexx

Beginner

  • "elexx" started this thread

Posts: 24

Location: Werdau / Westsachsen

  • Send private message

4

Tuesday, August 17th 2010, 9:10pm

Hallo Sepp,
vielen Dank für Deine Antwort und fürs Mitdenken!

Tja, ich hab zuerst auch alles in einzelnen xml's geschrieben, bis ich <scene> entdeckt habe. Das ist irgendwie viiiiel schöner und auch eleganter. Aber für den Betrachter natürlich eigentlich unwichtig.
Kein <krpano> in der defaultskin.xml? Das hab ich nicht dahineingeschrieben, das steht schon in Klaus' Template so drinnen. Aber es schadet offenbar auch nicht, wenn nicht gerade dasselbe event nochmals verwendet wird.

Leider löst Dein Vorschlag mein Problem auch nicht vollständig, es gibt auch hier wieder eine Abhängigkeit zwischen beiden Dateien, die über das einfache includieren der defaultskin.xml hinausgeht. Ich müsste also auch alle Projekte - die rundgang2.xml, die rundgang3.xml usw. - entsprechend ändern (nämlich den autoexecbat-Aufruf reinschreiben), das wollte ich eben gerade nicht.

Aber wie es aussieht, muss ichs wohl doch so machen. *g*

Grüße Steffen

5

Wednesday, August 18th 2010, 8:28am

Hi,
Kein <krpano> in der defaultskin.xml? Das hab ich nicht dahineingeschrieben, das steht schon in Klaus' Template so drinnen. Aber es schadet offenbar auch nicht, wenn nicht gerade dasselbe event nochmals verwendet wird.
das <krpano> in der defaultskin.xml stimmt schon und macht nichts, es kann nur nicht 2x dasselbe Attribute (z.B. onstart) gesetzt werden, das eine überschreibt dann das andere,

falls du das "onxmlcomplete" Event in deinen XML Dateien und Scenen nicht verwendest, könnst du es in der defaultskin.xml verwenden, die Events bleiben solange gesetzt bis sie beim Laden durch erneutes setzen überschrieben werden,

das "onxmlcomplete" wird jedesmal, nach dem Laden einer XML oder eine Scene ausgeführt,
hier kann dann der Code von spitzlbergerj verwendet werden, nur halt komplett in der der defaultskin.xml:
<events onxmlcomplete = "autoexecbat();"

<action name="autoexecbat">
if (varMerker !== null,
showtext(get(data[infotext].content), infostyle);
set(varMerker, 1);
);
</action>
so können die anderen XML Dateien und Scenen unverändert bleiben,

Schöne Grüße,
Klaus

elexx

Beginner

  • "elexx" started this thread

Posts: 24

Location: Werdau / Westsachsen

  • Send private message

6

Wednesday, August 18th 2010, 10:15am

Hallo Klaus,
jaaaa, das ist die Lösung - so gehts:

In den einzelnen Projekten wird onstart=( zum Laden der ersten Szene benutzt und für alles andere die defaultskin.xml includiert, hier zuerst die rundgang1.xml :

Source code

1
2
3
4
5
6
7
8
<krpano version="1.0.8" onstart="loadscene(sc5911)">

   <include url="skin/defaultskin.xml" />

  <scene name="sc5911"> ... </scene>
  <scene name="sc5935"> ... </scene>
  <scene name="sc5956"> ... </scene>
</krpano>


und zum einmaligen Anzeigen der Kurzanleitung in der defaultskin.xml das onxmlcomplete-Event mit Sepps Codeschnipsel. Eine kleine Änderung war am Vergleichsoperator noch notwendig (===), aber die Lösung gabs hier:http://www.krpano.com/forum/wbb/index.ph…d&threadID=2033

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<krpano version="1.0.8">
  <events onxmlcomplete="action(autoexecbat);" />

<data name="infotext">Bewege das Bild mit der Maus!</data>

  <action name="autoexecbat">
  <!-- Erklaerungstext einmalig nach Laden des Panos -->
if (varMerker === null,
	showtext(get(data[infotext].content), infostyle);
	set(varMerker, 1);
  );
  </action>

</krpano>


Man muss halt nur aufpassen, dass man in weiteren Projekten nicht irgendwann onxmlcomplete=( verwendet, das bleibt der defaultskin.xml vorbehalten. Aber das ist ja kein Problem.

Vielen Dank Euch beiden!

Grüße Steffen