Sie sind nicht angemeldet.

1

Sonntag, 28. Februar 2021, 17:56

addlayer, only the last is visible...

Hello,

i don't understood why in this code only the last layer is visible and not all.
Its for text layer from an array call from the button 'DTS'

my visit is visible here: link

In this case, only the last layer 'Étang du Stock' is visible.
All my mayer have a different name, Y position is different, ....
I trace them :)

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<layer name="dts"  type="text" align="left" x="150" y="10" parent="panel"
   	html="DTSO"
   	css="font-family:Arial; font-size:24px; font-color:#000000; text-transform: uppercase;"
   	autowidth="auto"
   	autoheight="auto"
   	vcenter="false"
   	padding="10"
   	wordwrap="false"
   	bg="true"
   	bgcolor="0xffffff"
   	bgalpha="1.0"
   	bgborder="0"
   	bgroundedge="0"
   	bgshadow=""
   	txtshadow=""
   	mergedalpha="true"
   	interactivecontent="false"
   	onautosized=""
   	onclick="getDT(get(name));"
   	/>
   </layer>
<panoramagroup name="champagney"      	groupBarrage="dts"  	groupPano="champagney"    	title="Bassin de Champagney"/>
<panoramagroup name="gondrexange"     	groupBarrage="dts"  	groupPano="gondrexange"   	title="Étang de Gondrexange"/>
<panoramagroup name="mittersheim"     	groupBarrage="dts"  	groupPano="mittersheim"   	title="Étang de Mittersheim"/>
<panoramagroup name="stock"           	groupBarrage="dts"  	groupPano="stock"         	title="Étang du Stock"/>

<style name="titreBarrageStyle" type="text"  visible="true" keep="true"  align="center" zorder="1000" enable="true" alpha="true" padding="5" scale="1.0"
  autoheight="true" autowidth="true"  css="font-family:Arial; font-size:18px; "  />

<action name="getDT" scope="local" args="var1">
	def(ajustHauteur, number, 0);

	for(set(i,0), i LT panoramagroup.count, inc(i),
  	if( panoramagroup[get(i)].groupBarrage == get(var1),

        	getBarrage(get(panoramagroup[get(i)].groupPano), get(panoramagroup[get(i)].title), get(ajustHauteur));
        	add(ajustHauteur,  50);
  	);
	);

  </action>
<action name="getBarrage" scope="local" args="nomBarrage, titreBarrage, position">

  	addlayer(nomBarrage);

  	assignstyle(layer[nomBarrage], 'titreBarrageStyle');
  	set(layer[nomBarrage].html, get(titreBarrage));
  	set(layer[nomBarrage].x, 10);
  	set(layer[nomBarrage].y, get(position));

</action>

Thanks a lot for your help

2

Sonntag, 28. Februar 2021, 18:23

in your action getBarrage() you forgot :

addlayer(get(nomBarrage));
assignstyle(layer[get(nomBarrage)], 'titreBarrageStyle');
... etc

and.. mind that krpano does not distinct cases...
i wouldnt use names with small and big letters for xml element names (or variables).

https://krpano.com/docu/xml/#name

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »indexofrefraction« (28. Februar 2021, 19:29)


3

Sonntag, 28. Februar 2021, 19:28

Thanks a lot !

so in this case, nomBarrge is just an object, not a layer type object like in another poo language ?
Thanks for you precision ! :)
Damien

4

Sonntag, 28. Februar 2021, 19:33

no, nomBarrage is a variable in this case

by addlayer(nomBarrage); you create a layer with name="nomBarrage"

by addlayer(get(nomBarrage)); you create a layer with name="<what is inside the variable nomBarrage>"

*smile*

in krpano you need get() to "resolve" a variable
you will need get() in most functions, except for debug(), trace() and very few other exceptions

in your example you create 4x the same layer "nomBarrage" so in the end you just have the last iteration

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »indexofrefraction« (28. Februar 2021, 20:25)


5

Sonntag, 28. Februar 2021, 21:01

Thanks a lot, it's most clear !
Damien