Szenen und "onstart"

  • Hallo,
    ich bin neu mit krpano und habe gerade mein erstes Projekt abgeschlossen, ohne dass ich das Forum gebraucht habe *wink* , 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:

    Code
    <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:

    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

    2 Mal editiert, zuletzt von elexx (16. August 2010 um 19:40)

  • 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?

  • 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

    Code
    <krpano ...
    <events onxmlcomplete	= "autoexecbat();"
    ...

    Datei defaultskin.xml

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

    Viele Grüße

    Sepp

  • 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

  • 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

  • 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 :

    Code
    <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/inde…d&threadID=2033

    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

Jetzt mitmachen!

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