Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: krpano.com Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Anoril

Schüler

  • »Anoril« ist der Autor dieses Themas

Beiträge: 69

Wohnort: Paris, France

Beruf: Game Developer and Photographer

  • Nachricht senden

1

Samstag, 2. Februar 2019, 17:02

Nested arrays and Tween. A Bug or a Feature?

Hi there!
I'm working on some stuff and I have to efficietly parse children of Layers. Because I got a lot of layers and children, I decided to store the children nodes into a parent array instead of having a loop through all layers available. (That may be inconsistent, just tell me if you have better idea ;-) ).

OK, to get you see, Here is the expected structure:

Quellcode

1
2
3
4
5
<layer name="Parent">
   <layer name="Child0" />
   <layer name="Child1" />

</laver>
This structure is created by an action:

Quellcode

1
2
3
4
5
6
7
8
9
addLayer("Parent");

set(  layer[%1].onclick, showSubItems );

for( set(i,0), i LT 2, inc(i),
   txtadd(childName, "Child", get(i));
   addLayer(get(childName));   set( layer[get(childName)].parent, layer["Parent"]);
   copy( layer["Parent"].subItems[get(i)].item, layer[get(tagName)]);
);
This works like a charm.

The point is that the "showSubItem" action acts correctly with a direct "show" command:

Quellcode

1
2
3
4
5
6
<action name="showSubItem">
   for( set(i, 0), i LT subItems.count, inc(i),

  	set( subItems[get(i)].item.alpha, 1.0 );
  );
</action>


But when using a TWEEN command, it works [i]ONLY[/i] for the items with index greater than 0... i.e. the first item (idx=0) does not show.

Quellcode

1
2
3
4
<action name="showSubItem">
for( set(i, 0), i LT subItems.count, inc(i),
   tween( subItems[get(i)].item.alpha, 1.0, 3.0 );
  );</action>

Note that I found a workarround by modifying the index reference (saying it's a nonsense, as the index will ever be 0-N, but anyway, there is here a black-magic trick):

Quellcode

1
2
3
4
5
6
7
8
9
10
addLayer("Parent");

set(  layer[%1].onclick, showSubItems );

for( set(i,1), i LE 3, inc(i),
				
   txtadd(childName, "Child", get(i));
   addLayer(get(childName));   set( layer[get(childName)].parent, layer["Parent"]);
   copy( layer["Parent"].subItems[get(i)].item, layer[get(tagName)]);
);



I guess it is something about item-array naming convention or somewhat...

Regards,

Paul
« Quidquid latine dictum sit, altum sonatur »
Pentax stuff.

Anoril

Schüler

  • »Anoril« ist der Autor dieses Themas

Beiträge: 69

Wohnort: Paris, France

Beruf: Game Developer and Photographer

  • Nachricht senden

2

Samstag, 2. Februar 2019, 19:24

Hoy!
I tried to fix by giving an actual name to the sub-item using txtadd(subName, "sub", get(i)) but I had the same behaviour.
A magic moment :)
Regards
« Quidquid latine dictum sit, altum sonatur »
Pentax stuff.