Sie sind nicht angemeldet.

1

Donnerstag, 2. Dezember 2010, 21:11

Hotspots ein und ausblenden.

Hallo Ihr lieben und natürlich Hallo lieber Klaus :0)


Ich weiß das diese Frage schon ein paar mal hier im Forum gestellt wurde, weil ich selber das Forum danach durchsucht habe. Aber ich weiß auch das diese Frage nie beantwortet wurde. Zumindest habe ich Einträge passend zu meiner Frage gefunden die nicht mal ein JA geht oder ein NEIN geht nicht bekommen haben.
Das macht mich ja ein bisschen stutzig.

Ist es also tatsächlich nicht möglich ??????

Nun das Problem !
Auf einem Flat Pano (Gigapixel) sollen Hotspots eingebaut werden.
Das is ja für mich mittlerweile (stolz) alles kein Problem mehr.
ABER:

Ich möchte das manche Hotspots erst nach einer gewissen *Zoomtiefe* (nenn ich es mal) erscheinen.
Also wenn ich mich im Bild reingezoomt habe z.B. 30% erst dann sollen die Hotspots zu sehen (und auch erst dann anwählbar) sein.
Wie gesagt ich habe noch keine Beispiele oder sonstiges gefunden.
Ist das über Java Skript vielleicht lösbar oder ist die Lösung viel simpler ?

Einem Hotspot drehen lassen, oder in Kategorien einteilen alles das geht und das kann ich auch aber diese eine lästige Angelegenheit hällt mich nun seit Tagen auf.

Wäre toll wenn diese Frage nun endlich mal geklärt werden könnte.
Ich bin anscheinend nicht der einzige Unwissende hier :0)

Liebe Grüße aus Hamburg *smile*

2

Freitag, 3. Dezember 2010, 08:10

moin moin!

ist zwar nicht genau das, was du suchst, aber so blende ich hotspots aus und ein.

vg

sascha


<!-- Hotspots einblenden / ausblenden -->

<action name="toggle_polygonal_hotspots">
foreach(hotspot,i,
toggle_alpha(get(i));
);
set(update,view);
</action>

<action name="toggle_alpha">
if (hotspot[%1].point.count != 0,
switch(hotspot[%1].fillalpha,0,0.4);
set(hotspot[%1].fillcolor,0xFFCC00);,
);
</action>

<action name="_foreach_action">
trace("Error in foreach loop: push/pop stack corrupted");
</action>

<action name="foreach">
set(%2,0);
push(action[_foreach_action].content);
set(action[_foreach_action].content,"if(%2 LT %1.count,%3;inc(%2);_foreach_action(););");
_foreach_action();
pop(action[_foreach_action].content);
</action>


<plugin name="hotspot_button"
url="hotspots.png"
keep="true" preload="false"
visible="true" enabled="true" handcursor="true" capture="true" children="true"
zorder="0"
alpha="1.00" blendmode="normal"
smoothing="true"
align="leftbottom" edge=""
x="460" y="10" ox="" oy=""
width="" height=""
crop="" ondowncrop="" onovercrop=""
scale="1" scale9grid="" scalechildren="false"
rotate="0"
parent=""
mask=""
onloaded=""
onover=""
onhover="showtext(Hotspots anzeigen/verbergen);"
onout=""
ondown=""
onup=""
onclick="toggle_polygonal_hotspots();"
effect=""
/>

3

Freitag, 3. Dezember 2010, 10:31

Hallo Sascha

Danke für die schnelle Antwort.
Aber das ist tatsächlich nicht das was ich suche.
Das habe ich auch schon mal eingebaut und die einzelnen Hotspots dabei auch in Kategorien eingeteilt.
Also meinetwegen *Zeige mir nur die Hotspots für Kunst oder nur für Sehenswürdigkeiten usw. usw..

Ich brauche aber eine automatische Anzeige der Hotspots ab einer bestimmten Zoomtiefe.
Trotzdem DANKE für die schnelle Antwort von dir.

KLAUS ????????????

Ist es denn wirklich nicht machbar ????? *cry*

4

Samstag, 4. Dezember 2010, 22:46

Mit "events onviewchange" kannst Du den fov auslesen. Ich hab mal ein Beispiel zum einblenden des -Bottom getestet.

Quellcode

1
2
3
4
5
<events onviewchange= "action(zoom);"/>

<action name="zoom">
	if(view.fov LE 0.8, set(plugin[out].visible,true),set(plugin[out].visible,fase));
</action>


Ich hoffe, es hilft Dir etwas weiter

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »KlausR« (4. Dezember 2010, 23:37)


5

Dienstag, 7. Dezember 2010, 12:40

Hallo anderer Klaus ;0)

Danke für den Codeschnipsel.

Ich werde das Heute Abend mal ausprobieren.

Gebe Bericht ob es funktioniert hat :0)



Tausend Dank erstmal. *squint*

6

Mittwoch, 8. Dezember 2010, 10:09

Hallo Klaus

Ich raff dein Schnipsel nicht so ganz.

if(view.fov LE 0.8,(Wofür steht das LE ?) set(plugin[out].visible,true),set(plugin[out].visible,false));
Und funktionieren tut es leider auch nicht.

Ist der Schnipsel so eigentlich vollständig ? Ich glaub da fehlt noch was. Kann das sein ?

LG
Hamburger

7

Mittwoch, 8. Dezember 2010, 12:16

Hallo,

da habe ich wohl zu wenig Informationen gegeben. Mich hatte es immer gestört, das in meiner Bildergallery beim öffnen schon alle Bottom zu sehen waren. Die out, left, right, up und down Buttom hatten jedoch keine Funktion, da ja das Bild in voller größe angezeigt wird (Fov=1).
Das Beispiel der action zoom bezieht sich auf mein out-Buttom (plugin[out]) das ich beim Start auf fase setze. Beim zoomen wird dieser Wert nun kleiner und wenn er <= 0.8 wird, wird das plugin[out] auf true gesetzt und die Button werden sichtbar.
Du mußt die If-Funktionen für Deine Seite entsprechend anpassen. Der Fov bei einen Panorama ist größer als bei meinen Bildern. Auch das, was beim erreichen des Wertes geschehen soll, muß Du entprechend anpassen (zB mit Set. Tween, Action usw … Hotspot-ein).

So sieht die Steuerung der Butttons auf meiner Seite aus: http://herosso.de/Start/Moor/Moor.htm

ach ja, LE ist <=

Available operators:
"==" - equal
"!=" - not equal
"<" or "LT" - lower than *
">" or "GT" - greater than *
"<=" or "LE" - lower or equal than *
">=" or "GE" - greater or equal than *
"===" - strict equal (compare only existent variables)
"!==" - strict not equal (compare only existent variables)


Hoffendlich hilft's Dir jetzt weiter.

Schöne Grüße
m „anderen“ :-) Klaus

8

Donnerstag, 9. Dezember 2010, 08:30

Oh Gott.... Ich und programieren..........

Ich vergas zu erwähnen das ich nur einen Mü von einem Anfänger entfernt bin :0)

Alles was ich kann ist abschreiben :0)

Naja nicht ganz so schlimm, aber fast.

Ich habe mich mal ran gesetzt und angefangen ein bisschen was zu probieren. Ist der Ansatz hier richtig ?


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
<action name="hidehotspot"> 
tween(hotspot[%1].alpha, 0, 0.5, default, set(hotspot[%1].visible,false) ); 
</action> 
<action name="showhotspot"> 
set(hotspot[%1].visible, true); 
tween(hotspot[%1].alpha, 1.0); 
</action> 
<action name="hideallhotspots"> 
if(%1 != NEXT, set(i,0) ); 
hidehotspot( get(hotspot[%i].name) ); 
inc(i); 
if(view.fov LE 0.8, hideallhotspots(NEXT) ); 
</action>


Das ist aber alles zusammengesucht aus anderen Beiträgen hier im Forum.


Boahhh... Wer schreibt endlich mal ein KRPano Buch :0) ?

Aber in die richtige Richtung geht es oder ???????

Brauch Hilfestellung BÜDDE !

9

Donnerstag, 9. Dezember 2010, 11:15

Ich habe jetzt mal ein Beispiel auf meine Homepage geladen.
Hier der Link :http://www.herosso.de/Start/kugel_moor/Start.html
Wenn Du nun vom Turm schaust,( zweite Vorschaubild von oben) und in das Bild hinein zoomst, erscheint ein Pfeil neben der Seelandschaft. Beim zurück zoomen verschwindet er wieder.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 	<events onviewchange= "action(zoom);"/>

	<action name="zoom">
		if(view.fov LE 70
		, 
		set(hotspot[hs2].visible,true); 
		,	
		set(hotspot[hs2].visible,fase)); 
	</action>

	<hotspot name="hs2"
	         url="pfeil.png"
	         keep="false"
	         ath="58" atv="4"
	         zoom="false" distorted="true"
	         width="130" height="157"
	         scale="0.3" scale9grid="" scalechildren="true" rotate="-10"
	         rx="0" ry="0" rz="0"
	         edge="center" ox="" oy=""
	         crop="" ondowncrop="" onovercrop=""
	         visible="fase" enabled="true" handcursor="true" capture="true" children="true"
 	         zorder="0"
	         alpha="1.00" blendmode="normal" smoothing="true"
 	         refreshrate="auto"
 	         onloaded=""
	         onover=""
	         onhover=""
	         onout=""
	         ondown=""
	         onup=""
	         onclick="loadscene(scene4, null, MERGE, BLEND(2));"
	         details="8"
	         effect=""
	         flying="0"
	         inverserotation="false"
	         usecontentsize="false"
	         />


Beim öffnen des Panoramas ist das hotspot hs2 auf visible="fase" gesetzt
Das Panorama öffnet mit den Wert fov=96.
Beim zoomen wird durch das "events onviewchange" die "action(zoom) aufgeführt
Mit If wird der Wert ausgelesen. Ist dieser <= 70 (LE) wird der hotspot hs2 auf visible,true gesetzt. (Hotspot erscheint)
Ist der Wert > 70, wird der Wert auf visible,fase gesetzt (Hotspot verschwindet)



Schöne Grüße
Klaus

10

Donnerstag, 9. Dezember 2010, 21:26

KlausR du bist ja mal ein Gott !!!!

Ich gloob das ja nicht.
Ich kopier den Code, füge ihn bei mir ein, mach ein paar Änderungen der Links und Namen und ALLES läuft.
DANKE KLAUSR !!!


Das Leben kann manchmal so schön sein :0)
Ich schließ dich mit in meine Gebete ein ;0)


Doch einen Wermutstropfen habe ich noch gefunden wobei der wahrscheinlich am Flashplayer liegen wird.
Wenn man den allseits beliebten KRPano Ani....swf Hotspot benutzt, wird er zwar aus und ein geblendet aber er bewegt sich nicht mehr.

Da ich aber eh kein Fan von bewegten Hotspots bin ist das sowas von egal :0)


DANKE DANKE DANKE