Avatar de l’utilisateur
marcOow
Touillette
Messages : 38
Enregistré le : 14 Oct 2016, 10:59

valueAtTime

13 Sep 2017, 18:44

Hello!

J'utilise souvent une expression qui marche pas mal sur les opacités ou l'échelle :
t=thisComp.layer("Null").effet("paramètre glissière")("curseur");
t.valueAtTime(time-inPoint)


Là j'aurais besoin d'utiliser la même technique uniquement sur la position Y d'un calque

J'ai ça:

y = thisComp.layer("sparkls Outlines - Group 42").transform.position[1];
[transform.position[0],y]

je voudrais rajouter .valueAtTime(time-inPoint) sur ma valeur Y mais after me rappel que je dois encore approfondir les expressions à chaque tentative...

Quelqu'un aurait une idée?
0

Viclio
Touillette
Messages : 41
Enregistré le : 13 Juin 2017, 15:12

Re: valueAtTime

13 Sep 2017, 19:06

Ecris là comme ça :

[value[0], thisComp.layer("Blanc uni 4").transform.position.valueAtTime(time-.5)[1]]

Un plus calé que moi en expression pourrait peut-être expliquer pourquoi, mais parfois l'expression ne fonctionne pas alors qu'elle devrait. Dans ce cas, réécris là d'une autre manière.
1

Avatar de l’utilisateur
marcOow
Touillette
Messages : 38
Enregistré le : 14 Oct 2016, 10:59

Re: valueAtTime

13 Sep 2017, 20:07

Viclio a écrit :Ecris là comme ça :

[value[0], thisComp.layer("Blanc uni 4").transform.position.valueAtTime(time-.5)[1]]

Un plus calé que moi en expression pourrait peut-être expliquer pourquoi, mais parfois l'expression ne fonctionne pas alors qu'elle devrait. Dans ce cas, réécris là d'une autre manière.


Ça marche nickel! Merci
0

Avatar de l’utilisateur
kana
Modérateur
Messages : 463
Enregistré le : 25 Nov 2015, 12:40

Re: valueAtTime

13 Sep 2017, 21:03

J'ai pas trop pigé ton souci, et comment tu as écrit ton expression, mais bien que l'expression de viclio fonctionne, si tu veux partir de la tienne ceci devrait marcher :

Code : Tout sélectionner

y = thisComp.layer("sparkls Outlines - Group 42").transform.position;
[transform.position[0],y.valueAtTime(time-inPoint)[1]]


En fait il faut que tu récupères la valeur valueattime avant de choisir ton array [1], donc sur la 1ere ligne tu ne dois pas avoir ton [1] à la fin, pour le récupérer ensuite

Par exemple ceci ne marchera pas :

Code : Tout sélectionner

y = thisComp.layer("sparkls Outlines - Group 42").transform.position[1];
[transform.position[0],y.valueAtTime(time-inPoint)]
1

Avatar de l’utilisateur
marcOow
Touillette
Messages : 38
Enregistré le : 14 Oct 2016, 10:59

Re: valueAtTime

13 Sep 2017, 21:23

kana a écrit :Par exemple ceci ne marchera pas :

Code : Tout sélectionner

y = thisComp.layer("sparkls Outlines - Group 42").transform.position[1];
[transform.position[0],y.valueAtTime(time-inPoint)]


Merci pour ton explication!
J'avais justement écris ça...
0

Viclio
Touillette
Messages : 41
Enregistré le : 13 Juin 2017, 15:12

Re: valueAtTime

13 Sep 2017, 21:39

En fait il faut que tu récupères la valeur valueattime avant de choisir ton array [1], donc sur la 1ere ligne tu ne dois pas avoir ton [1] à la fin, pour le récupérer ensuite


Oui, voilà :) Au moins là on comprend :)
1

Avatar de l’utilisateur
Duduf
Mug
Messages : 559
Enregistré le : 16 Juin 2015, 18:02
Contact : Site Internet

Re: valueAtTime

14 Sep 2017, 10:19

Et pour terminer et avoir un code bien lisible (et faut vraiment prendre cette habitude pour la suite, quand vous avancez, d'autant plus si un jour vous vous mettez aux scripts ou si after introduit ENFIN les variables globales dans les expressions), et qui ne génère aucun bug, ni maintenant ni à l'avenir, respectez quelques règles, et évitez les trucs implicites :

le code cleané :

  1. var otherPosition = thisComp.layer("sparkls Outlines - Group 42").transform.position ;
  2. var otherPositionValue = otherPosition.valueAtTime(time - inPoint) ;
  3. var y = otherPositionValue[1];
  4. var x = transform.position[0];
  5. [x,y];


C'est beaucoup plus facile à lire, et donc à modifier.
le "var" pour déclarer les variables, il faut TOUJOURS le mettre même si after s'accomode de son absence, en script ça fout vite la merde de l'oublier (pour des histoires de scopes, pour ceux à qui ça parle), et le jour où on aura des var globales, ça foutra bien la merde de l'oublier (je pense que c'est une des raisons pour lesquelles on en a pas, en l'occurence)

et ensuite pour être clean, je suis un grand partisan de "une action -> une seule ligne" et "une ligne -> une seule action"
5

Avatar de l’utilisateur
marcOow
Touillette
Messages : 38
Enregistré le : 14 Oct 2016, 10:59

Re: valueAtTime

14 Sep 2017, 13:52

@Duduf un gros MERCI pour cette explication!
0

Retourner vers « Scripts & Expressions »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité