Sie sind nicht angemeldet.

1

Dienstag, 16. November 2010, 23:25

Eigenschaften aller Hotspots mittels eines Befehls verändern (gruppieren)

Hallo zusammen,

ich habe in einer xml unterschiedliche Szenen und in diesen wiederum Hotspots mit den unterschiedlichsten Namen.
Nun möchte ich gerne folgendes erreichen:

1. Alle Hotspots in der xml ansprechen und z.B. die Eigenschaft "visible" ändern.
und zusätzlich
2. nur ausgewählte Hotspots aufrufen um deren Eigenschaften zu ändern.

Ich könnte mir jetzt eine action schreiben wo ich jeden Hotspot namentlich aufrufe um die neue Eigenschaft zuzuweisen, jedoch bei einer Vielzahl von Hotspots ist das sehr umständlich. Ich bin mir sicher man kann den Hotspots eine bzw in diesem Falle mehrere Gruppen zuweisen, also z.B.

Gruppe A enthält Hotspots 1-20 zugleich sind Hotspots 4-12 in der Gruppe B noch mit drin.

Wie müsste also mein <hotspots> Befehl aussehen und wie die entsprechende <action> dazu?



Danke für eure Hilfe
Gruß
Matthias

2

Freitag, 19. November 2010, 08:23

vielleicht nochmal in der Kurzform:

ich hab z.B. folgende hotspots:

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
	<hotspot name="vorplatz"
		         style="weiter"
		         ath="24"
		         atv="5"
		         onclick="looktohotspot(vorplatz,50,smooth(150,25,100));loadscene(vorplatz, NULL, MERGE, BLEND(1));lookat(40,0,);">
	</hotspot>

	<hotspot name="raum_unten"
		         style="weiter"
		         ath="264"
		         atv="15"
				 rotate="180"
		         onclick="looktohotspot(raum_unten,50,smooth(150,25,100));loadscene(raum_unten, NULL, MERGE, BLEND(1));lookat(0,0,);">
	</hotspot>

	<hotspot name="vorraum_3"
		         style="weiter"
		         ath="217"
		         atv="10"
				 rotate="45"
		         onclick="looktohotspot(vorraum_3,50,smooth(150,25,100));loadscene(vorraum_3, NULL, MERGE, BLEND(1));lookat(0,0,);">
	</hotspot>
	
	<hotspot name="zur_bruecke"
		         style="weiter"
		         ath="153"
		         atv="5"
				 rotate="0"
		         onclick="looktohotspot(zur_bruecke,50,smooth(150,25,100));loadscene(nach_bruecke, NULL, MERGE, BLEND(1));lookat(180,0,);">
	</hotspot>


Um die Eigenschaften der Hotspots zu ändern muss ich alle einzeln namentlich aufrufen:

Quellcode

1
2
3
4
5
6
7
8
9
10
<events	onloadcomplete="set(hotspot[vorplatz].visible,true);
							tween(hotspot[vorplatz].alpha,0.7, 1);
							set(hotspot[raum_unten].visible,true);
							tween(hotspot[raum_unten].alpha,0.7, 1);
							set(hotspot[vorraum_3].visible,true);
							tween(hotspot[vorraum_3].alpha,0.7, 1);
							set(hotspot[zur_bruecke].visible,true);
							tween(hotspot[zur_bruecke].alpha,0.7, 1);
							set(hotspot[info_button_burgfried].visible,true);
							tween(hotspot[info_button_burgfried].alpha,0.7, 1);"/>


das ist doch reichlich kompliziert und ich suche nach einer Möglichkeit dies global mit einem Befehl (jeweils für tween und für set) zu erledigen.
Ich hab es jetzt mal mit:

Quellcode

1
set(hotspot.visible,true); tween(hotspot.alpha,0.7,1);
versucht, jedoch erscheinen dann die Hotspots gar nicht. So wird es auch hier im Forum empfohlen.

Was mach ich nur falsch? Geht das Grouping überhaupt?

Schönes WE
Gruß
Matthias

3

Freitag, 19. November 2010, 09:36

Hi,

es wäre möglich eine <action> zu schreiben, welche alle Hotspots durchläuft,
dabei auf einen bestimmten Wert prüft (z.B. style == weiter), und dann
diesen Hotspot, für den diese Bedingung zutrifft, entsprechend ändert,

z.B.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
<action name="change_all_hotspots">
  if(%1 != NEXT, set(i,0));
  if(i LT hotspot.count,
    if(hotspot[get(i)].style == weiter, change_one_hotspot(get(i)) );
    inc(i);
    change_all_hotspots(NEXT);
  );
</action>

<action name=" change_one_hotspot">
  set(hotspot[%1].visible,true);
  tween(hotspot[%1].alpha,0.7, 1);
</action>


Schöne Grüße,
Klaus

4

Freitag, 19. November 2010, 20:41

Hallo Klaus,

super herzlichen Dank!!!! Ich hab zwar noch etwas Probleme diese Zeilen zu verstehen aber es funktioniert erstmal. Wieder ein Problem weniger!

Noch mal vielen Dank für die schnelle Hilfe!! *thumbup*

Schönes WE

Gruß
Matthias