Statusübergabe Hotspots anzeigen oder nichtanzeigen via Button zwischen Kugelbildernstandpunkten

  • Ich versuche die Interaktion hinzubekommen, dass wenn ich in einem Kugelbild mögliche Hotspotverbindungen anzeigen lassen via Knopfdruck auf einen bereits erstellten Button
    alle Hotspots angezeigt werden und wenn ich in ein anderes Kugelbild springe auch in diesem alle Hotspots angezeigt werden, da er sich den Status der Anzeige via gewählten Knopfdruck von einem in das nächste Kugelbild gemerkt hat.

    zur Interaktion das entweder alle aus oder alle Hotspots angezeigt werden nutze ich folgenden code:

    <action name="hotspot_an-aus_schalten"> <!-- Durchläuft alle Hotspots der Art Standpunkte und schaltet Sie an und aus -->
    for( set(i,0), i LT hotspot.count, inc(i),
    if( hotspot[get(i)].cat == 'standpunkt',
    switch( hotspot[get(i)].visible);
    );
    );
    </action>

    Ich habe den Button zur an und abwahl schon, kann in jedem Kugelbild die Hotspots an und abwählen aber ich kann nicht den letzten Anzeigestatus von einem Kugelbild also An oder Aus an das nächste Kugelbild übergeben.


    Hat einer eine Idee oder vllt ein entsprechenden Code?



  • Ungestestet!

  • Danke für die schnelle Antwort,

    habe mal dein Quellcode implementiert, leider passiert nix.

    Ich habe meiner Hotspot onclickanweisung deine Funktion onloadpano als Action auch schon übergeben

  • Vielen Dank dein Code funktioniert sehr gut.

    Ich habe ein Problem mit der Umsetzung auf mehrere Kugelbilder.

    Ich habe nicht alle Standpunkte in einem XML wie es bei Touren der Fall ist, sondern ich habe es so das ich von jedem Standpunkt in die Nachbar Standpunkte springen kann.

    Wenn ich von einem Standpunkt in den nächsten Springe via loadpano dann merkt er sich leider nicht den Status der Hotspots ob sie an oder aus sind.

    Es funktioniert wie in deinem Code nur wenn die Kugelbilder in einer XML stehen.

    Ich habe also 2 xmls:


    <krpano onstart="loadscene(0,null,MERGE|KEEPVIEW);">

    <events onpreviewcomplete="onloadpano()" />

    <scene name="pano1">
    <preview type="grid(cube,16,16,512,0xCCCCCC,0x000000,0x999999);" />

    <hotspot name="spot1" url="hotspot.png" scale="0.5" ath="-25" atv="+5" cat="standpunkt" />
    <hotspot name="spot2" url="hotspot.png" zoom="true" scale="0.5" ath="0" atv="+25" cat="standpunkt" />
    <hotspot name="spot3" url="hotspot.png" distorted="true" scale="0.2" ath="+25" atv="+5" ondown="hotspot_an-aus_schalten()" />
    <hotspot name="spot4" url="hotspot.png" distorted="true" scale="0.2" ath="0" atv="+5" ondown="loadscene(pano2,null,MERGE|KEEPVIEW);" />
    </scene>

    <merken keep="1" showhs="1" />

    <action name="hotspot_an-aus_schalten">
    for( set(i,0), i LT hotspot.count, inc(i),
    if( hotspot[get(i)].cat == 'standpunkt',
    switch( hotspot[get(i)].visible);
    copy( merken.showhs, hotspot[get(i)].visible);
    );
    );
    </action>

    <action name="onloadpano">
    for( set(i,0), i LT hotspot.count, inc(i),
    if( hotspot[get(i)].cat == 'standpunkt',
    copy( hotspot[get(i)].visible, merken.showhs);
    );
    );
    </action>
    </krpano>


    _______________________________________________________


    <krpano onstart="loadscene(0,null,MERGE|KEEPVIEW);">

    <events onpreviewcomplete="onloadpano()" />

    <scene name="pano2">
    <preview type="grid(cube,16,16,512,0xCCCCCC,0x000000,0x999999);" />

    <hotspot name="spot5" url="hotspot.png" scale="0.5" ath="-25" atv="+5" cat="standpunkt" />
    <hotspot name="spot6" url="hotspot.png" zoom="true" scale="0.5" ath="0" atv="+25" cat="standpunkt" />
    <hotspot name="spot7" url="hotspot.png" distorted="true" scale="0.2" ath="+25" atv="+5" ondown="hotspot_an-aus_schalten()" />
    <hotspot name="spot8" url="hotspot.png" distorted="true" scale="0.2" ath="0" atv="+5" ondown="loadscene(pano1,null,MERGE|KEEPVIEW);" />
    </scene>

    <merken keep="1" showhs="1" />

    <action name="hotspot_an-aus_schalten">
    for( set(i,0), i LT hotspot.count, inc(i),
    if( hotspot[get(i)].cat == 'standpunkt',
    switch( hotspot[get(i)].visible);
    copy( merken.showhs, hotspot[get(i)].visible);
    );
    );
    </action>

    <action name="onloadpano">
    for( set(i,0), i LT hotspot.count, inc(i),
    if( hotspot[get(i)].cat == 'standpunkt',
    copy( hotspot[get(i)].visible, merken.showhs);
    );
    );
    </action>
    </krpano>

    Edited once, last by Ossigott90 (February 1, 2017 at 12:45 PM).

  • Nur einmal in der globalen XML packen, sonst setzt du merken.showhs jedes mal neu auf 1 !

  • Dann muss ich aber immer das Erste Kugelbild starten,

    ich versuche ein Weg zu finden das die Funktionalität auch gegeben ist wenn ich das 2 Kugelbild als Erste anwähle dann muss da ja auch erst mal die Variablen 1 gesetzt sein.

    Dazu muss man doch irgendwie den Status von showhs via einer oncklick Anweisung übergeben oder?

  • Es funktioniert leider nicht.


    Ich habe 2 Standpunkte mit jeweils der kompletten KrPano Ordner Struktur also jeweils *.xml, *.html und so weiter

    Wenn ich den Ersten Standpunkt öffne und Springe in den Zweiten dann werden ja die Werte in merken nicht übergeben.

    Wenn ich alles in einer *xml hätte dann funktioniert das natürlich.

  • Es kommt somit ja nur die Js-sync Funktion als Vorbild in Frage,

    ich Steige aber leider nicht durch den Quelltest durch.


    Wäre es nicht möglich die Funktion des merkens in eine separate Funktion auszulagern die alle Touren benutzen, also eine separate .XML in der immer der Status gespeichert ist und die nächste Tour einfach den Status von dieser Datei ausließt?

  • Wäre es nicht möglich die Funktion des merkens in eine separate Funktion auszulagern die alle Touren benutzen, also eine separate .XML in der immer der Status gespeichert ist und die nächste Tour einfach den Status von dieser Datei ausließt?

    Das geht auch, aber dann muß der Zustand an den Server gesendet werden und dort immer in die jeweilige XML eintragen werden.
    Doaminübergreifend, geht das nur mit der Übergabe des Zusandes über die URL.

    Aber ich denke das übersteigt dein Können, da fehlen einfach zu viele Grundlagen!

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!