Sie sind nicht angemeldet.

1

Dienstag, 17. Dezember 2013, 18:38

Titeleinblendung

Wie kann ich es einrichten, dass der in der ersten "scene" kurz mit einem plugin eingeblendete Titel nur einmal erscheint und nicht wieder beim erneuten Aufrufen der scene?

$this->cacheCode('[php]',' <!-- Titelbild, das man wegklicken kann und das nach einigen Sekunden selbst verschwindet -->


<events onloadcomplete="delayedcall(10, hideintroimage() ); set(events.onloadcomplete,null);"></events>

<plugin name="introimage" url="titel-weihnachtsmarkt.png" align="center" visible="true" onloaded="set(alpha,0); tween(alpha,1.0);" zorder="2" onclick="hideintroimage();"></plugin>

<action name="hideintroimage">
if(plugin[introimage].enabled,
set(plugin[introimage].enabled,false);
tween(plugin[introimage].alpha, 0.0, 0.5, default, removeplugin(introimage));
);
</action> ')

Eben bin ich auf diesen Workaround gekommen: In einer zweiten "scene" bekommt dasselbe Panorama einen anderen "scene"-Namen. Die Hotspot-Pfeile der übrigen "scenes" werden dann nicht auf diese "scene" verlinkt. -- Hat gut geklappt -Nur blieb dann noch die Frage, wie die doppelte "scene" in der Vorschauleiste verborgen wird.

Einfacher geht's nicht:
$this->cacheCode('[php]','thumburl="panos/01_IMG_9607_Panorama_equi.tiles/thumb.jpg" lat="" lng="" heading="" ')
gelöscht - doppelter Thumb ist verborgen.


Grüße

Harald

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »panox« (17. Dezember 2013, 19:21)


2

Mittwoch, 18. Dezember 2013, 07:46

Hallo Harald,

du kannst "onstart" nutzen.
Also gleich in der ersten Zeile:
<krpano version="1.16" logkey="false" showerrors="false" onstart="action(startup);">


In der aufgerufenen action (hier habe ich die mal "startup" genannt) kannst du dann die erste Szene laden und die gewünschten Modifikationen vornehmen.


Gruß
Wolf

3

Mittwoch, 18. Dezember 2013, 14:06

Hallo Wolf,

danke, aber so ganz habe ich Deinen Vorschlag nicht verstanden.

Kannst Du deine Lösung bitte mal in meine xml einbauen?

$this->cacheCode('[php]','
<krpano version="1.16" title="Virtuelle Tour Weihnachtsmarkt 2013" onstart="startup();">

<include url="skin/vtourskin_.xml"></include>
<autorotate enabled="true" waittime="3.0" accel="1.5" speed="-3" horizon="0"></autorotate>

<action name="on">
set(plugin[roton].visible, true);
set(plugin[rotoff].visible, false);
switch(autorotate.enabled)
</action>
<action name="off">
set(plugin[rotoff].visible, true);
set(plugin[roton].visible, false);
switch(autorotate.enabled)
</action>

<!-- set skin settings: bingmaps? gyro? thumbnail controlling? tooltips? -->

<skin_settings bingmaps="false" bingmaps_key="" bingmaps_zoombuttons="false" gyro="true" thumbs_width="120" thumbs_height="80" thumbs_padding="10" thumbs_crop="0|40|240|160" thumbs_opened="false" thumbs_text="false" thumbs_dragging="true" thumbs_onhoverscrolling="false" thumbs_scrollbuttons="false" thumbs_scrollindicator="false" tooltips_thumbs="false" tooltips_hotspots="true" tooltips_mapspots="false" controlbar_offset="20"></skin_settings>

<!-- set optional skin logo url -->
<layer name="skin_logo" url="" scale="0.25" opened_onclick="openurl('...',_blank);"></layer>

<hotspot name="nadirlogo" keep="true" url="skin/_logo_.png" ath="0" atv="90" distorted="true" scale="1.0" rotate="15.0" enabled="false"></hotspot>

<events name="nadirlogo_automatic_rotation" keep="true" onviewchange="copy(hotspot[nadirlogo].rotate, view.hlookat);"></events>

<!-- <plugin name="editor" url="%SWFPATH%/plugins/editor.swf" keep="true"></plugin>
<plugin name="options" url="%SWFPATH%/plugins/options.swf" keep="true" view="true" display="true" control="false" image="true" onloaded="open();"></plugin>

<plugin name="editor" url="%SWFPATH%/plugins/editor.swf" keep="true"></plugin>
<plugin name="options" url="%SWFPATH%/plugins/options.swf" keep="true" view="true" display="true" control="false" image="true" onloaded="open();"></plugin>-->




<action name="startup">
if(startscene === null, copy(startscene,scene[0].name));
loadscene(get(startscene), null, MERGE);
</action>


<scene name="scene_01_IMG_9607_Panorama_equi" title="01_Eingang" onstart="">



<!-- Titelbild, das man wegklicken kann, das aber auch nach einigen Sekunden selbst verschwindet
thumburl="panos/01_IMG_9607_Panorama_equi.tiles/thumb.jpg" lat="" lng="" heading="" -->


<events onloadcomplete="delayedcall(10, hideintroimage() ); set(events.onloadcomplete,null);"></events>

<plugin name="introimage" url="titel-weihnachtsmarkt.png" align="center" visible="true" onloaded="set(alpha,0); tween(alpha,1.0);" zorder="2" onclick="hideintroimage();"></plugin>

<action name="hideintroimage">
if(plugin[introimage].enabled,
set(plugin[introimage].enabled,false);
tween(plugin[introimage].alpha, 0.0, 0.5, default, removeplugin(introimage));
);
</action>

<view hlookat="48" vlookat="0" fovtype="MFOV" fov="120" maxpixelzoom="2.0" fovmin="70" fovmax="140" limitview="auto"></view>

<preview url="panos/01_IMG_9607_Panorama_equi.tiles/preview.jpg"></preview>

<image type="CUBE" multires="true" tilesize="512" progressive="false">
<level tiledimagewidth="3426" tiledimageheight="3426">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l3_%s_%v_%h.jpg"></cube>
</level>
<level tiledimagewidth="1713" tiledimageheight="1713">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l2_%s_%v_%h.jpg"></cube>
</level>
<level tiledimagewidth="857" tiledimageheight="857">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l1_%s_%v_%h.jpg"></cube>
</level>
<mobile>
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/mobile_%s.jpg"></cube>
</mobile>
</image>

<!-- place your scene hotspots here -->
<hotspot name="spot1" style="skin_hotspotstyle" ath="39.320" atv="23.079" linkedscene="scene_02_img_9586_panorama_equi"></hotspot>
<hotspot name="spot2" style="skin_hotspotstyle" ath="-159.924" atv="8.905" linkedscene="scene_13_img_9814_panorama_equi"></hotspot>

</scene>


<scene name="scene_02_IMG_9607_Panorama_equi" title="01_Eingang" onstart="" thumburl="panos/01_IMG_9607_Panorama_equi.tiles/thumb.jpg" lat="" lng="" heading="">




<view hlookat="48" vlookat="0" fovtype="MFOV" fov="120" maxpixelzoom="2.0" fovmin="70" fovmax="140" limitview="auto"></view>

<preview url="panos/01_IMG_9607_Panorama_equi.tiles/preview.jpg"></preview>

<image type="CUBE" multires="true" tilesize="512" progressive="false">
<level tiledimagewidth="3426" tiledimageheight="3426">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l3_%s_%v_%h.jpg"></cube>
</level>
<level tiledimagewidth="1713" tiledimageheight="1713">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l2_%s_%v_%h.jpg"></cube>
</level>
<level tiledimagewidth="857" tiledimageheight="857">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l1_%s_%v_%h.jpg"></cube>
</level>
<mobile>
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/mobile_%s.jpg"></cube>
</mobile>
</image>

<!-- place your scene hotspots here -->
<hotspot name="spot1" style="skin_hotspotstyle" ath="39.320" atv="23.079" linkedscene="scene_02_img_9586_panorama_equi"></hotspot>
<hotspot name="spot2" style="skin_hotspotstyle" ath="-159.924" atv="8.905" linkedscene="scene_13_img_9814_panorama_equi"></hotspot>

</scene>
')

Danke!

Grüße

Harald

4

Mittwoch, 18. Dezember 2013, 17:15

Hallo Harald,

so wie ich das auf die Schnelle beurteile, würde ich ans Ende von startup noch
delayedcall(10, hideintroimage());
setzen

Die Events brauchst du dann gar nicht mehr.

Die if-Abfrage in hideintroimage sollte auch nicht mehr notwendig sein.

Was sollte passieren:
- das Plugin mit dem IntroImage ist beim Start sichtbar
- startup ruft die erste Szene auf
- nach 10 Sekunden wird durch hideintroimage das Introimage ausgeblendet.

Habe noch etwas zum Debuggen eingebaut. Falls es nicht klappt.

Gruß
Wolf

$this->cacheCode('[php]','<krpano version="1.16" title="Virtuelle Tour Weihnachtsmarkt 2013" logkey="true" showerrors="true" onstart="startup();">

<include url="skin/vtourskin_.xml"></include>
<autorotate enabled="true" waittime="3.0" accel="1.5" speed="-3" horizon="0"></autorotate>

<action name="on">
set(plugin[roton].visible, true);
set(plugin[rotoff].visible, false);
switch(autorotate.enabled)
</action>
<action name="off">
set(plugin[rotoff].visible, true);
set(plugin[roton].visible, false);
switch(autorotate.enabled)
</action>

<!-- set skin settings: bingmaps? gyro? thumbnail controlling? tooltips? -->

<skin_settings bingmaps="false" bingmaps_key="" bingmaps_zoombuttons="false" gyro="true" thumbs_width="120" thumbs_height="80" thumbs_padding="10" thumbs_crop="0|40|240|160" thumbs_opened="false" thumbs_text="false" thumbs_dragging="true" thumbs_onhoverscrolling="false" thumbs_scrollbuttons="false" thumbs_scrollindicator="false" tooltips_thumbs="false" tooltips_hotspots="true" tooltips_mapspots="false" controlbar_offset="20"></skin_settings>

<!-- set optional skin logo url -->
<layer name="skin_logo" url="" scale="0.25" opened_onclick="openurl('...',_blank);"></layer>

<hotspot name="nadirlogo" keep="true" url="skin/_logo_.png" ath="0" atv="90" distorted="true" scale="1.0" rotate="15.0" enabled="false"></hotspot>

<events name="nadirlogo_automatic_rotation" keep="true" onviewchange="copy(hotspot[nadirlogo].rotate, view.hlookat);"></events>

<!-- <plugin name="editor" url="%SWFPATH%/plugins/editor.swf" keep="true"></plugin>
<plugin name="options" url="%SWFPATH%/plugins/options.swf" keep="true" view="true" display="true" control="false" image="true" onloaded="open();"></plugin>

<plugin name="editor" url="%SWFPATH%/plugins/editor.swf" keep="true"></plugin>
<plugin name="options" url="%SWFPATH%/plugins/options.swf" keep="true" view="true" display="true" control="false" image="true" onloaded="open();"></plugin>-->




<action name="startup">
trace('startup beginnt');

if(startscene === null,
copy(startscene,scene[0].name)
);
loadscene(get(startscene), null, MERGE);
delayedcall(10, hideintroimage());
trace('startup Ende');
</action>


<scene name="scene_01_IMG_9607_Panorama_equi" title="01_Eingang" onstart="">



<!-- Titelbild, das man wegklicken kann, das aber auch nach einigen Sekunden selbst verschwindet
thumburl="panos/01_IMG_9607_Panorama_equi.tiles/thumb.jpg" lat="" lng="" heading="" -->

<!--
<events
onloadcomplete="delayedcall(10, hideintroimage() ); set(events.onloadcomplete,null);"></events>
-->

<plugin name="introimage" url="titel-weihnachtsmarkt.png" align="center" visible="true" onloaded="set(alpha,0); tween(alpha,1.0);" zorder="2" onclick="hideintroimage();"></plugin>

<action name="hideintroimage">
trace('hideintroimage beginnt');
<!-- if(plugin[introimage].enabled, -->
set(plugin[introimage].enabled,false);
tween(plugin[introimage].alpha, 0.0, 0.5, default, removeplugin(introimage));
<!--);-->
trace('hideintroimage beginnt');

</action>

<view hlookat="48" vlookat="0" fovtype="MFOV" fov="120" maxpixelzoom="2.0" fovmin="70" fovmax="140" limitview="auto"></view>

<preview url="panos/01_IMG_9607_Panorama_equi.tiles/preview.jpg"></preview>

<image type="CUBE" multires="true" tilesize="512" progressive="false">
<level tiledimagewidth="3426" tiledimageheight="3426">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l3_%s_%v_%h.jpg"></cube>
</level>
<level tiledimagewidth="1713" tiledimageheight="1713">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l2_%s_%v_%h.jpg"></cube>
</level>
<level tiledimagewidth="857" tiledimageheight="857">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l1_%s_%v_%h.jpg"></cube>
</level>
<mobile>
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/mobile_%s.jpg"></cube>
</mobile>
</image>

<!-- place your scene hotspots here -->
<hotspot name="spot1" style="skin_hotspotstyle" ath="39.320" atv="23.079" linkedscene="scene_02_img_9586_panorama_equi"></hotspot>
<hotspot name="spot2" style="skin_hotspotstyle" ath="-159.924" atv="8.905" linkedscene="scene_13_img_9814_panorama_equi"></hotspot>

</scene>


<scene name="scene_02_IMG_9607_Panorama_equi" title="01_Eingang" onstart="" thumburl="panos/01_IMG_9607_Panorama_equi.tiles/thumb.jpg" lat="" lng="" heading="">




<view hlookat="48" vlookat="0" fovtype="MFOV" fov="120" maxpixelzoom="2.0" fovmin="70" fovmax="140" limitview="auto"></view>

<preview url="panos/01_IMG_9607_Panorama_equi.tiles/preview.jpg"></preview>

<image type="CUBE" multires="true" tilesize="512" progressive="false">
<level tiledimagewidth="3426" tiledimageheight="3426">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l3_%s_%v_%h.jpg"></cube>
</level>
<level tiledimagewidth="1713" tiledimageheight="1713">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l2_%s_%v_%h.jpg"></cube>
</level>
<level tiledimagewidth="857" tiledimageheight="857">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l1_%s_%v_%h.jpg"></cube>
</level>
<mobile>
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/mobile_%s.jpg"></cube>
</mobile>
</image>

<!-- place your scene hotspots here -->
<hotspot name="spot1" style="skin_hotspotstyle" ath="39.320" atv="23.079" linkedscene="scene_02_img_9586_panorama_equi"></hotspot>
<hotspot name="spot2" style="skin_hotspotstyle" ath="-159.924" atv="8.905" linkedscene="scene_13_img_9814_panorama_equi"></hotspot>

</scene>')

5

Mittwoch, 1. Januar 2014, 23:24

Hallo Wolf,

ich habe Deinen Vorschlag versucht, es hat aber nicht wie erwartet geklappt. Meine Lösung war eine programmiertechnische Missetat, aber die schnell benötigte Lösung meines Problems.
Ein paar Zeilen Code zuviel - das hat die Performance nun nicht beeinträchtigt.

Ich würde mich aber freuen, wenn Du mir Deine elegante Lösung dieser immer wieder benötigten Titeleinblendung an einem funktionierenden Beispiel zeigen könntest.

Viele Grüße

Harald

6

Donnerstag, 2. Januar 2014, 01:35

Hallo Harald,

ich habe es noch weiter vereinfacht.

Das Beispiel zum Ausprobieren (die Einrückung im Code wird hier leider "verschluckt"):

Benötigt:
2 Equis (in diesem Fall 101.tif und 102.tif)
1 Introimage (in diesem Fall "titel_weihnachtsmarkt.png". Ich nehme lieber einen Unterstrich.)


Die beiden Equis ziehtst du auf "MAKE VTOUR (MULTIRES) droplet.app"
(Unter Windoof wahrschienlich .exe statt .app)


Das resultierende XML bitte so modifizieren:
1. in die erste Zeile zusätzlich

logkey="true" showerrors="true"

einfügen. Das erleichtert das Debuggen. Bei Fehlern werden diese angezeigt. Mit "o" wird der Log angezeigt.
Das sollte dann so aussehen:
<krpano version="1.17" title="Virtual Tour" onstart="startup();" logkey="true" showerrors="true">


2. Die action "startup" ersetzen durch:

<action name="startup">
loadscene("scene_101",null,MERGE);
showIntroimage();
delayedcall(10, hideIntroimage());
</action>

<action name="hideIntroimage">
tween(plugin[introimage].alpha, 0.0, 0.5, default);
</action>

<action name="showIntroimage">
tween(plugin[introimage].alpha, 1.0, 0.5, default);
</action>

3. In die erste Szene fügst du als zweite Zeile ein:

<plugin name="introimage" url="titel_weihnachtsmarkt.png" align="center" alpha="0.0" zorder="2" onclick="hideintroimage();" />

Also:
<scene name="scene_101" title="101" onstart="" thumburl="panos/101.tiles/thumb.jpg" lat="" lng="" heading="" >
<plugin name="introimage" url="titel_weihnachtsmarkt.png" align="center" alpha="0.0" zorder="2" onclick="hideintroimage();" />
<view hlookat="0" vlookat="0" fovtype="MFOV" fov="120" maxpixelzoom="2.0" fovmin="70" fovmax="140" limitview="auto" />
usw.


Das wars.

Wie funktioniert es?
- Das PlugIn "introimage" ist in der ersten Szene definiert und unsichtbar (alpha="0.0"). Bei Klick auf das IntroImage wird die action "hideIntroimage" ausgeführt.
- die actions hideIntroimage und showIntroimage blenden das Bild ein bzw. aus.
- onstartup sorgt für das Laden der gewünschten Szene, blendet das introImage durch Aufruf von showIntroimage ein und blendet es verzögert durch Aufruf von hideIntroimage wieder aus.

Ich hoffe, du kannst das an deine Tour anpassen. Deine Parameter und Funktionsnamen habe ich ja schon übernommen.

Gruß
Wolf

7

Donnerstag, 2. Januar 2014, 08:06

Danke, Wolf, für Deine Anleitung!

Soweit klappt das schon, nur leider kann ich so die erste scene nicht gebrauchen. Die Navigation durch Mauszeigerbewegung ist im Bereich des ausgeblendeten Titelbilds hakelig.
Das heißt, die Autorotation lässt sich nicht stoppen, man kann keine Drehbewegung im Panorama ausführen und Hotspotpfeile reagieren nicht.

Getestet in Chrome. Mit und ohne krpano Testing Server.

Für mich unverständlich. Bedeutet das, dass eleganter Code zu rechenintensiv ist und meine Primitiv-Lösung die Grafikkarte/CPU oder was auch immer weniger in Anspruch nimmt?

Viele Grüße

Harald

8

Donnerstag, 2. Januar 2014, 09:57

Hallo Harald,

eine zusätzlich Zeile:
<action name="hideIntroimage">
tween(plugin[introimage].alpha, 0.0, 0.5, default);
set(plugin[introimage].visible,false);
</action>

Gruß
Wolf

9

Donnerstag, 2. Januar 2014, 10:46

Hallo Harald,
Bedeutet das, dass eleganter Code zu rechenintensiv ist und meine Primitiv-Lösung die Grafikkarte/CPU oder was auch immer weniger in Anspruch nimmt?

Das bedeutet nur, dass es gestern wohl zu spät war für mich ;-)

Zur Erklärung:
Das PlugIn wurde in der alten Fassung nicht unsichtbar gemacht sondern nur durchsichtig (alpha=0). Daher hat es immer noch die Mausevents blockiert.

Der Code drückt auch nicht auf die Performance. Das sind eher die Berechnungen für die Darstellung des Panos.

Es geht mehr um Lesbarkeit, Wartbarkeit und die Möglichkeit Code für andere Projekt einfach übernehmen zu können.
So wird deine Code-Bibliothek langsam wachsen und du bei deinen Projekten immer schneller.

Gruß
Wolf

10

Donnerstag, 2. Januar 2014, 11:06

Danke nochmal, aber so ganz ist die Kuh noch nicht vom Eis. :|

Wenn ich mit dem Hotspotpfeil vom Flur (scene 2) zurück zum Eingang (scene 1) navigiere, bleibt es bei der Blockade. Das gilt auch für die anderen Hotspots, die auf scene 1 verweisen.

Letzte Version:


$this->cacheCode('[php]','
...
<action name="startup">
loadscene("scene_01_IMG_9607_Panorama_equi",null,MERGE);
showIntroimage();
delayedcall(10, hideIntroimage());
</action>


<action name="showIntroimage">
tween(plugin[introimage].alpha, 1.0, 0.5, default);
</action>

<action name="hideIntroimage">
tween(plugin[introimage].alpha, 0.0, 0.5, default);
set(plugin[introimage].visible,false);
</action>


<scene name="scene_01_IMG_9607_Panorama_equi" title="01_Eingang" onstart=""thumburl="panos/01_IMG_9607_Panorama_equi.tiles/thumb.jpg" lat="" lng="" heading="">



<!-- Titelbild, das man wegklicken kann, das aber auch nach einigen Sekunden selbst verschwindet
-->

<plugin name="introimage" url="titel_weihnachtsmarkt.png" align="center" alpha="0.0" zorder="2" onclick="hideintroimage();" />



<view hlookat="48" vlookat="0" fovtype="MFOV" fov="120" maxpixelzoom="2.0" fovmin="70" fovmax="140" limitview="auto"></view>

<preview url="panos/01_IMG_9607_Panorama_equi.tiles/preview.jpg"></preview>

<image type="CUBE" multires="true" tilesize="512" progressive="false">
<level tiledimagewidth="3426" tiledimageheight="3426">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l3_%s_%v_%h.jpg"></cube>
</level>
<level tiledimagewidth="1713" tiledimageheight="1713">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l2_%s_%v_%h.jpg"></cube>
</level>
<level tiledimagewidth="857" tiledimageheight="857">
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/l1_%s_%v_%h.jpg"></cube>
</level>
<mobile>
<cube url="panos/01_IMG_9607_Panorama_equi.tiles/mobile_%s.jpg"></cube>
</mobile>
</image>

<!-- place your scene hotspots here -->
<hotspot name="spot1" style="skin_hotspotstyle" ath="39.320" atv="23.079" linkedscene="scene_02_img_9586_panorama_equi"></hotspot>
<hotspot name="spot2" style="skin_hotspotstyle" ath="-159.924" atv="8.905" linkedscene="scene_13_img_9814_panorama_equi"></hotspot>

</scene>

...

')



Grüße

Harald

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »panox« (2. Januar 2014, 11:14)


11

Donnerstag, 2. Januar 2014, 11:18

Dann machen wir das IntroImage per Default unsichtbar und nur bei Bedarf sichtbar.

<action name="showIntroimage">
set(plugin[introimage].visible,true);
tween(plugin[introimage].alpha, 1.0, 0.5, default);
</action>


und in der ersten Szene wird visible="false" hinzugefügt.

Also:
<plugin name="introimage" url="titel_weihnachtsmarkt.png" align="center" alpha="0.0" visible="false" zorder="2" onclick="hideintroimage();" />

Gruß
Wolf

12

Donnerstag, 2. Januar 2014, 11:44

Klasse - keine Blockade mehr! Kann mit dieser Lösung auch noch das Ein- und Ausblenden des Titelbildes erhalten bleiben?

13

Donnerstag, 2. Januar 2014, 11:54

Kann mit dieser Lösung auch noch das Ein- und Ausblenden des Titelbildes erhalten bleiben?
Was genau meinst du?

Willst du später das Titelbild (IntroImage) auch in anderen Panos einblenden können?

Gruß
Wolf

14

Donnerstag, 2. Januar 2014, 12:01

Nun wird das Titelbild nicht mehr weich ein- und ausgeblendet (engl. to fade in/out), sondern es wird durch "visible="false" ohne Übergang unsichtbar geschaltet - eben so, wie wenn man eine Glühbirne an- und ausschaltet.

15

Donnerstag, 2. Januar 2014, 12:41

Ich habe die Blendzeit mal von 0,5 auf 2,5 Sekunden verlängert.
So kann man den Effekt besser sehen.

Dafür habe ich die Variable gBlendZeit verwendet.
Diese kannst du nach deinen Wünschen in startup anpassen.


Die kommentierten Änderungen:

<action name="startup">
set(gBlendZeit,2.5);
loadscene("scene_101",null,MERGE);
wait(load); <!-- erst das Pano laden -->
<!-- hier koennte man eine weiter Pause einfuegen. Z.B. wait(2); -->
showIntroimage();
delayedcall(10, hideIntroimage());
</action>

<action name="hideIntroimage">
tween(plugin[introimage].alpha, 0.0, get(gBlendZeit), default);
wait(get(gBlendZeit)); <!-- das Ausblenden abwarten -->
set(plugin[introimage].visible,false); <!-- das durchsichitge Bild unsichtbar machen. Sonst faengt es die MouseEvents ab -->
</action>

<action name="showIntroimage">
set(plugin[introImage].alpha,0); <!-- nur zur Sicherheit. Alpha sollte von hideIntroimage bereits auf 0 gesetzt worden sein. -->
set(plugin[introimage].visible,true); <!-- das durchsichtige Bild sichtbar machen. Es ist danch vorhanden, aber immer noch durchsichtig -->
tween(plugin[introimage].alpha, 1.0, get(gBlendZeit), default); <!-- einblenden. Die Dauer wurde in startup mit gBlendZeit definiert -->
</action>

Gruß
Wolf

16

Donnerstag, 2. Januar 2014, 13:46

Hallo Wolf,

das sieht klasse aus nun! Genau so hatte ich es mir vorgestellt! Die fertige Tour mit 24 Panoramen wird hoffentlich bald nach den Betriebsferien auf der Webseite des Auftraggebers veröffentlicht. Vor Weihnachten haben sie es leider nicht mehr geschafft. Dann verlinke ich sie hier mal und Du kannst Deinen tollen Code in Aktion sehen.

Danke für Deine Geduld und Deine Hilfestellung! Die Codeschnipsel sehe ich mir noch genauer an und übe mit ihnen.

Viele Grüße

Harald

17

Donnerstag, 2. Januar 2014, 18:52

Hallo Harald,

schön, wenn du zufrieden bist.

Das ist aber erst ein kleiner Anfang mit einem klitzekleinen nano-Prgrämmchen.
Zudem sind das Progamm und die Daten (Szenen) nicht getrennt.
Das erschwert die Wartung.

Ich würde daher zumindest das PlugIn introImage aus der Definition der Szene heraus nehemen.
(Dann muss man allerdings keep="true" ergänzen.)
Der Nachteil: Das IntroImage bleibt ohne Mausklick 10 Sekunden auf dem Bildschirm. Sogar wenn der User sofort zu einem anderen Pano wechselt.
Das kann man mit dem Event: onRemovePano abfangen.
ShowIntroimage kann zudem selbst hideIntoimage verzögert aufrufen.

Es ist zudem viel praktischer nicht in den actions die Paramter bei Bedarf zu ändern, sondern in Variablen.

Für eine andere Tour musst du nur noch vGlobals anpassen. Der eigentlich Programm-Code ändert sich nie!
$this->cacheCode('[php]',' <vGlobals startSzene="scene_101" intoImageEinblendZeit="2.5" introImageAusblendZeit="0.5" introImageAutoAusblendenNach="5" urlIntroimage="titel_weihnachtsmarkt.png" />

<plugin name="introimage" align="center" alpha="0.0" visible="false" zorder="2" keep="true" onclick="hideintroimage();" />

<events
onremovepano="myRemovePano();"
/>

<action name="startup">
set(plugin[introimage].url,get(vGlobals.urlIntroimage));
loadscene(get(vGlobals.startSzene),null,MERGE);
wait(load); <!-- erst das Pano laden -->
showIntroimage();
</action>

<action name = "myRemovePano">
if(plugin[introImage].visible == true,
hideIntroimage();
);
</action>

<action name="hideIntroimage">
tween(plugin[introimage].alpha, 0.0, get(vGlobals.introImageAusblendZeit), default);
wait(get(vGlobals.introImageAusblendZeit)); <!-- das Ausblenden abwarten -->
set(plugin[introimage].visible,false); <!-- das durchsichitge Bild unsichtbar machen. Sonst faengt es die MouseEvents ab -->
</action>

<action name="showIntroimage">
set(plugin[introImage].alpha,0); <!-- nur zur Sicherheit. Alpha sollte von hideIntroimage bereits auf 0 gesetzt worden sein. -->
set(plugin[introimage].visible,true); <!-- das durchsichtige Bild sichtbar machen. Es ist danch vorhanden, aber immer noch durchsichtig -->
tween(plugin[introimage].alpha, 1.0, get(vGlobals.intoImageEinblendZeit), default); <!-- einblenden -->
delayedcall(get(vGlobals.introImageAutoAusblendenNach), hideIntroimage());
</action>')

Gruß
Wolf

18

Donnerstag, 2. Januar 2014, 19:00

Toll, Wolf! Das ist ja schon ein kleiner Kurs!

Mir schwebt schon eine Seite vor, auf der solche praktischen Programmiertechniken anhand von Beispielcode und den entsprechenden Tourbeispielen erlernt werden können.
Deine neue Version werde ich genau untersuchen und testen.

Hier habe ich mal auf die Schnelle versucht, Deinen Code in einer noch unfertigen Beispiel-Tour anzuwenden. Gefällt mir sehr gut!

Mittelalterfest in Hammoor 2013

Grüße

Harald

19

Montag, 6. Januar 2014, 17:14

Hallo Wolf,

FF meldet einen xml-parsing-Fehler, Chrome zeigt die Tour ohne Meckern.

Grund:

<!-- dann den gewünschten einblenden -->

Selbst auskommentierte Umlaute stören FF.

mit "ue" klappt's dann auch mit dem Feuerfuchs. :D

20

Montag, 6. Januar 2014, 17:31

Hallo Wolf,

FF meldet einen xml-parsing-Fehler, Chrome zeigt die Tour ohne Meckern.

Grund:



Selbst auskommentierte Umlaute stören FF.

mit "ue" klappt's dann auch mit dem Feuerfuchs. :D
Mit der richtigen Zeichencodierung sollte den FF das eigentlich nicht stören.