...das funktioniert bereits.
Ich möchte also autorotate.enable durch "switch" auf "false" setzen sobald ein Flyout-Hotspot geklickt wird. Wenn ich nun auf den geöffneten Flyout-Hotspot klicke fährt er wieder zurück und autorotate geht wieder an.
Soweit O.K....
Wenn ich, während der 1. Flyout-Hotspot noch offen ist, einen der anderen Flyout-Hotspots klicke fährt der 1. wieder zurück und der 2. fährt ins Bild. Da die Funktion "switch" ja togglelt wird nun das autorotate wieder eingeschaltet. Das autorotate muss also so lang ausbleben bis alle Hotspots quasi in Ruheposition sind.
Ich habe auch anstatt "switch" "set" versucht - geht nicht.
Also: Ich brauche eine Funktion die nachschaut ob alle Flyout-Hotspot in Ruheposition sind und die das autorptate stoppt und erst wieder freigibt wenn alle Flyout-Hotspots iwieder in Ruheposition sind...
Vielen Dank an alle fleissigen Helferlein...
GLG Andy
Hier der Code:
<style name="flyoutimage"
distorted="true"
backup_rx="0"
backup_ry="0"
backup_rz="0"
backup_scale="0"
backup_zorder="0"
flying="0.0"
flystate="0"
onclick="if(flystate == 0, flyout_by_name(get(name)), flyback_by_name(get(name)) ); switch(autorotate.enabled).false;"
/>
<hotspot name="spot1" style="flyoutimage"
url="image1.jpg"
zorder="1"
ath="45"
atv="54"
scale="0.5"
rx="-22.5" ry="-26.25" rz="-50.1"
/>
<hotspot name="spot2" style="flyoutimage"
url="image2.jpg"
zorder="2"
ath="60"
atv="54"
scale="0.5"
rx="-22.5" ry="-26.25" rz="-50.1"
/>
<hotspot name="spot3" style="flyoutimage"
url="image3.jpg"
zorder="3"
ath="73"
atv="55"
scale="0.5"
rx="-22.5" ry="-26.25" rz="-50.1"
/>
<action name="flyout_by_name">
<!-- make all other hotspots flying back -->
flyback_others();
<!--
for best control set 4 fly states:
0 = normal
1 = while flying out
2 = out
3 = while flying back
-->
<!-- save original position/rotation -->
if(hotspot[%1].flystate == 0,
copy(hotspot[%1].backup_rx, hotspot[%1].rx);
copy(hotspot[%1].backup_ry, hotspot[%1].ry);
copy(hotspot[%1].backup_rz, hotspot[%1].rz);
copy(hotspot[%1].backup_scale, hotspot[%1].scale);
copy(hotspot[%1].backup_zorder, hotspot[%1].zorder);
);
<!-- set new state -->
set(hotspot[%1].flystate,1);
set(hotspot[%1].zorder,99);
<!-- tween the rotations values to 0 for a flat screen view -->
tween(hotspot[%1].rx, 0);
tween(hotspot[%1].ry, 0);
tween(hotspot[%1].rz, 0);
tween(hotspot[%1].scale, 1.5);
<!--
tween 'flying' to 1.0,
this makes the hotspot independent from the panorama rotation and scaling
-->
tween(hotspot[%1].flying, 1.0, 0.5, default, set(hotspot[%1].flystate,2); );
</action>
<action name="flyback_by_name">
if(hotspot[%1].flystate != 3,
set(hotspot[%1].flystate,3);
<!-- tween back to the stored backup values -->
tween(hotspot[%1].rx, get(hotspot[%1].backup_rx) );
tween(hotspot[%1].ry, get(hotspot[%1].backup_ry) );
tween(hotspot[%1].rz, get(hotspot[%1].backup_rz) );
tween(hotspot[%1].scale, get(hotspot[%1].backup_scale) );
copy(hotspot[%1].zorder, hotspot[%1].backup_zorder);
<!-- tween 'flying' also back to 0.0 -->
tween(hotspot[%1].flying, 0.0, 0.5, default, set(hotspot[%1].flystate,0); );
);
</action>
<action name="flyback_others">
if(%1 != nextloop, set(i,0));
if(hotspot[%i].style == flyoutimage,
if(hotspot[%i].flystate != 0, flyback_by_name(get(hotspot[%i].name)); );
);
inc(i);
if(i LT hotspot.count, flyback_others(nextloop); );
</action>
Display More