Guia do Usuário Cancelar

Diferenças de sintaxe entre os mecanismos de expressão

  1. Guia do usuário do After Effects
  2. Versões beta
    1. Visão geral do programa Beta
    2. Página inicial do After Effects Beta
  3. Introdução
    1. Introdução ao After Effects
    2. Novidades no After Effects 
    3. Notas de versão | After Effects
    4. Requisitos de sistema do After Effects
    5. Atalhos de teclado no After Effects
    6. Formatos de arquivo compatíveis | After Effects
    7. Recomendações de hardware
    8. After Effects para Apple Silicon
    9. Planejamento e configuração
  4. Espaços de trabalho
    1. Itens gerais da interface do usuário
    2. Conheça a interface do After Effects
    3. Fluxos de trabalho
    4. Espaços de trabalho, painéis e visualizadores
  5. Projetos e composições
    1. Projetos
    2. Noções básicas da composição
    3. Pré-composição, aninhamento e pré-renderização
    4. Exibir informações detalhadas de desempenho com o Criador de perfil de composição
    5. Renderizador de composição CINEMA 4D
  6. Importação de gravação
    1. Preparação e importação de imagens estáticas
    2. Importação do After Effects e do Adobe Premiere Pro
    3. Importação e interpretação de vídeo e áudio
    4. Preparo e importação de arquivos de imagem 3D
    5. Importação e interpretação de itens de gravação
    6. Trabalhar com itens de gravação
    7. Detectar pontos de edição usando a Detecção de edição de cena
    8. Metadados XMP
  7. Textos e gráficos
    1. Texto
      1. Formatação de caracteres e o painel Caractere
      2. Efeitos de texto
      3. Criação e edição de camadas de texto
      4. Formatação de parágrafos e o painel Parágrafo
      5. Extrusão de texto e camadas de forma
      6. Animação de texto
      7. Exemplos e recursos de animação de texto
      8. Modelos de texto dinâmico
    2. Animações
      1. Trabalhar com Modelos de animações no After Effects
      2. Usar expressões para criar listas suspensas em Modelos de animações
      3. Trabalhar com propriedades essenciais para criar Modelos de animações
      4. Substituir imagens e vídeos em Modelos de animações e Propriedades essenciais
      5. Anime de maneira mais rápida e fácil usando o painel Propriedades
  8. Desenho, pintura e caminhos
    1. Visão geral de camadas de forma, caminhos e gráficos vetoriais
    2. Ferramentas de pintura: Pincel, Carimbo e Borracha
    3. Traçados de forma cônica
    4. Atributos de forma, operações de pintura e operações de caminho para camadas de forma
    5. Use o efeito de forma Deslocar caminhos para alterar formas
    6. Criação de formas
    7. Criar máscaras
    8. Remover objetos de seus vídeos com o painel Preenchimento com reconhecimento de conteúdo
    9. Pincel tipo rotoscópio e Refinar fosco
  9. Camadas, marcadores e câmera
    1. Seleção e organização de camadas
    2. Modos de mesclagem e estilos de camadas
    3. Camadas 3D
    4. Propriedades da camada
    5. Criação de camadas
    6. Gerenciamento de camadas
    7. Marcadores de camada e de composição
    8. Câmeras, luzes e pontos de interesse
  10. Animação, quadros-chave, rastreamento de movimento e chaveamento
    1. Animação
      1. Noções básicas de animação
      2. Animação com ferramentas Marionete
      3. Gerenciamento e animação de caminhos de forma e máscaras
      4. Animação de desenho e captura de formas usando o After Effects
      5. Ferramentas de animação diversas
      6. Trabalhar com animação orientada por dados
    2. Quadro-chave
      1. Interpolação do quadro-chave
      2. Definir, selecionar e excluir quadros-chave
      3. Editar, mover e copiar quadros-chave
    3. Rastreamento de movimento
      1. Rastrear e estabilizar movimento
      2. Reconhecimento facial
      3. Rastreamento de máscara
      4. Referência de máscara
      5. Velocidade
      6. Esticamento e remapeamento de tempo
      7. Timecode e unidades de exibição de tempo
    4. Aplicação de máscara
      1. Aplicação de máscara
      2. Efeitos de máscara
  11. Transparência e composição
    1. Visão geral e recursos da composição e transparência
    2. Canais alfa e máscaras
    3. Foscos de controle e foscos móveis
  12. Ajustar cor
    1. Noções básicas de cores
    2. Gerenciamento de cores
    3. Efeitos de correção de cores
    4. Gerenciamento de cores OpenColorIO e ACES
  13. Predefinições de animação e efeitos
    1. Visão geral das predefinições de animação e efeitos
    2. Lista de efeitos
    3. Gerenciador de efeitos
    4. Efeitos de simulação
    5. Efeitos de estilo
    6. Efeitos de áudio
    7. Efeitos de distorção
    8. Efeitos de perspectiva
    9. Efeitos de canal
    10. Efeitos de geração
    11. Efeitos Tempo
    12. Efeitos de transição
    13. O efeito Reparo do obturador de rolagem
    14. Efeitos Desfoque e Tornar nítido
    15. Efeitos de Canal 3D
    16. Efeitos de utilitários
    17. Efeitos de fosco
    18. Efeitos Ruído e Granulação
    19. Efeito de ampliação com preservação de detalhes
    20. Efeitos obsoletos
  14. Expressões e automação
    1. Expressões
      1. Noções básicas de expressão
      2. Entender sobre a linguagem de expressões
      3. Utilização de controles de expressão
      4. Diferenças de sintaxe entre os mecanismos de expressão Javascript e Legacy ExtendScript
      5. Edição de expressões
      6. Erros de expressão
      7. Utilização do editor de expressões
      8. Usar expressões para editar e acessar propriedades de texto
      9. Referência de idioma de expressão
      10. Exemplos de expressão
    2. Automação
      1. Automação
      2. Scripts
  15. Vídeo imersivo, VR e 3D
    1. Construa ambientes VR no After Effects
    2. Aplicar efeitos de vídeo imersivo
    3. Ferramentas de composição para vídeos VR/360
    4. Renderizador 3D avançado
    5. Importar e adicionar modelos 3D à composição
    6. Importação de modelos 3D das bibliotecas da Creative Cloud
    7. Iluminação com base na imagem
    8. Extração e animação de luzes e câmeras de modelos 3D
    9. Rastreamento de movimento de câmera 3D
    10. Projetar e aceitar sombras
    11. Animações de modelos 3D incorporadas
    12. Coletor de sombras
    13. Extração de dados de profundidade 3D
    14. Modificar as propriedades de materiais de uma camada 3D
    15. Trabalhar no Espaço de design 3D
    16. Gizmos de transformação 3D
    17. Faça mais com a animação 3D
    18. Visualização de alterações em projetos 3D em tempo real com o mecanismo Mercury 3D.
    19. Adicionar design responsivo aos gráficos 
  16. Exibições e visualizações
    1. Visualizar
    2. Visualização de vídeo com o Mercury Transmit
    3. Modificação e utilização de exibições
  17. Renderização e exportação
    1. Noções básicas de renderização e exportação
    2. Codificação em H.264 no After Effects
    3. Exportar um projeto do After Effects como um projeto do Adobe Premiere Pro
    4. Conversão de filmes
    5. Renderização de vários quadros
    6. Renderização automatizada e renderização de rede
    7. Renderização e exportação de imagens estáticas e sequências de imagens estáticas
    8. Utilização do codec GoPro CineForm no After Effects
  18. Trabalho com outros aplicativos
    1. Dynamic Link e After Effects
    2. Trabalho com o After Effects e outros aplicativos
      1. Exportar um projeto do After Effects como um projeto do Premiere Pro
    3. Sincronizar configurações no After Effects
    4. Bibliotecas da Creative Cloud no After Effects
    5. Plug-ins
    6. Cinema 4D e Cineware
  19. Colaboração: Frame.io e Team Projects
    1. Colaboração no Premiere Pro e After Effects
    2. Frame.io
      1. Instalar e ativar o Frame.io
      2. Usar Frame.io com Premiere Pro e After Effects
      3. Perguntas frequentes
    3. Team Projects
      1. Introdução ao Team Projects
      2. Criar um Projeto de equipe
      3. Colaborar com o Team Projects
  20. Memória, armazenamento e desempenho
    1. Memória e armazenamento
    2. Como o After Effects lida com problemas de memória insuficiente durante uma visualização    
    3. Melhorar o desempenho
    4. Preferências
    5. GPU e os requisitos de driver de GPU para o After Effects
  21. Knowledge Base
    1. Problemas conhecidos
    2. Problemas corrigidos
    3. Perguntas frequentes
    4. After Effects e macOS Ventura
    5. Como o After Effects lida com problemas de memória insuficiente durante uma visualização

Este documento explica as diferenças de sintaxe da linguagem de expressões entre os mecanismos de expressão Javascript e Legacy ExtendScript no After Effects 16.0.

Consulte este documento para saber mais sobre como melhorar suas expressões para o mecanismo de expressões de Javascript, ou ao corrigir erros que ocorrem quando a avaliação de expressões escritas para versões anteriores do After Effects retorna falhas no mecanismo de expressões de Javascript.

A linguagem de expressões no After Effects tem base em Javascript, que é uma implementação de ECMAScript. O mecanismo de expressões Javascript no After Effects 16.0 tem base em ECMAScript 2018. O mecanismo de expressões Legacy ExtendScript tem base em ECMAScript 3 (1999). (O Adobe ExtendScript também é a linguagem usada na criação de scripts no After Effects e em outros aplicativos da Adobe.)

Você pode seguir os exemplos fornecidos abaixo, além da orientação para a criação de expressões que funcionam em ambos os mecanismos de expressões JavaScript e Legacy ExtendScript.

As diferenças principais entre os mecanismos de expressão Javascript e Legacy ExtendScript são:

Sintaxe moderna do Javascript: melhorias feitas à linguagem de expressões

As expressões podem usar a sintaxe de JavaScript do ECMAScript 2018

Muitas adições foram feitas à linguagem JavaScript desde o ECMAScript 3. Há novos métodos para usar com sequências de caracteres, matrizes e objetos que são mais compactos e legíveis. Também há novas maneiras de declarar variáveis e funções, bem como parâmetros padrão, operadores spread e muito mais. Este documento não aborda essas alterações, porque se aplicam à linguagem JavaScript. Os recursos para saber mais sobre as muitas adições de sintaxe podem ser encontrados nos seguintes links:

Recursos adicionais e detalhados recomendados para saber mais sobre o JavaScript:

.value não é mais necessário ao vincular a outras propriedades a partir do Texto de origem

Ao fazer referência a outro valor de propriedade a partir de uma propriedade de texto de origem, o mecanismo do Legacy ExtendScript requer que .value seja adicionado ao final da propriedade. O mecanismo do JavaScript mostra o valor da propriedade por padrão, a menos que outro atributo como .propertyIndex ou .name seja usado explicitamente.

Por exemplo:

thisCompayer(“Solid 1”)ransformosition
 
//No mecanismo herdado, isso equivale a “[object Property]” quando aplicado a uma propriedade de Texto de origem.
// No mecanismo do JavaScript, isso equivale ao valor da propriedade Posição da camada “Solid 1” quando aplicado a uma propriedade de Texto de origem.

Congelar valores de propriedade com posterizeTime(0)

No After Effects 16.0, posterizeTime(0) congela o valor de propriedade na hora 0 na composição. Isso se aplica aos mecanismos de Javascript e de Legacy ExtendScript.

Observação:

Isso não tem compatibilidade com versões anteriores e pode causar resultados inesperados em versões do After Effects anteriores à 16.0.

Sintaxe herdada incompatível

Praticamente qualquer sintaxe de expressão do mecanismo de expressões do Legacy ExtendScript tem compatibilidade com versões futuras do mecanismo de expressões de Javascript. No entanto, há algumas sintaxes herdadas que não são compatíveis com o mecanismo de expressões de Javascript. Às vezes, isso é causado por alterações de sintaxe no Javascript moderno. Em outros casos, sintaxes obsoletas ou desatualizadas foram removidas. Os exemplos de sintaxes funcionais e não funcionais estão localizados abaixo.

A maioria dessas diferenças de sintaxe pode ser corrigida por meio do script do aplicativo que re-escreve as expressões.

Diferenças da sintaxe if...else

Geralmente, é recomendável escrever sempre instruções if...else com quebras de linhas e colchetes de acordo com as diretrizes MDN. O mecanismo do Legacy ExtendScript costumava tolerar sintaxes amplas em intruções if...else, no entanto, o mecanismo do JavaScript é restrito. A sintaxe de if...else incorreta retorna falha na avaliação ao usar o mecanismo do JavaScript.

Concluir de uma expressão com uma instrução if não é permitido

Quando uma expressão é concluída com uma instrução if sem uma instrução else, o mecanismo do JavaScript falha ao avaliar e retorna o erro “Valor indefinido usado na expressão (pode ser um subscript fora do intervalo da matriz?)”. No mecanismo do Legacy ExtendScript, a seguinte expressão avalia para 100 se o tempo for maior que 1 segundo, caso contrário resulta em 50:

var x = 50;
if ( time > 1 ) {
    x = 100
}
O “else” aqui é inferido, mas não definido.

O mecanismo JavaScript requer a parte else da instrução para ser exibido explicitamente, caso seja a última instrução na expressão:

var x = 50;
if ( time > 1 ) {
    x = 100;
} else {
    x;
}

Isso resultará na avaliação correta em ambos os mecanismos do JavaScript e do Legacy ExtendScript.

If e else não podem estar na mesma linha sem colchetes

Uma instrução if...else em uma única linha sem colchetes avalia no mecanismo do Legacy ExtendScript, mas não avalia no mecanismo do JavaScript e retorna um erro como “Erro de sintaxe: Token inesperado else” ou “Valor indefinido usado na expressão (pode ser um subscript fora do intervalo da matriz?)”. O erro varia, dependendo do tipo de contexto e de propriedade.

No mecanismo do Legacy ExtendScript, a seguinte expressão avalia para 100 se o tempo for maior que 1 segundo, caso contrário resulta em 50:

if ( time > 1 ) 100 else 50;

O mecanismo JavaScript requer quebra de linha ou colchete para avaliar instruções if...else. Para casos simples, o operador ternário pode ser usado. Qualquer uma das seguintes sintaxes pode ser usada com o mecanismo do JavaScript:

// Solução A: adicionar uma quebra de linha antes de “else” permitirá que ambos os mecanismos avaliem corretamente.
 
if ( time > 1 ) 100
else 50;
 
// Solução B: adicionar o bracketing correto também permitirá que ambos os mecanismos avaliem corretamente.
 
if ( time > 1 ) { 100 } else { 50 };
  
//Solução C: use um operador ternário no lugar da instrução “if…else”, que também avalia corretamente em ambos os mecanismos.
 
time > 1 ? 100 : 50;

Todas as soluções acima avaliam corretamente no mecanismo do JavaScript e no mecanismo do Legacy ExtendScript.

Expressões não podem terminar em uma declaração de função

Se uma expressão é concluída com uma declaração de função, o mecanismo JavaScript não avalia a expressão com o erro “objeto do tipo localizado onde requer um número, uma matriz ou uma propriedade”. No mecanismo do JavaScript, o último item avaliado deve retornar um valor, em vez de declarar um.

Os seguintes exemplos funcionam no mecanismo do Legacy, mas não no mecanismo do JavaScript:

timesTen( value ); // O mecanismo herdado avalia esta linha, embora a função seja declarada abaixo.
 
function timesTen ( val ) {
    return val * 10
}

Quando uma função é chamada como a última linha (em vez da declaração), a expressão será avaliada corretamente em ambos os mecanismos:

function timesTen ( val ) {
    return val * 10
}

timesTen( value ); // O mecanismo JavaScript precisa que a chamada de função aconteça abaixo da declaração para retornar o valor correto.

A sintaxe abreviada this() não é permitida; em vez disso, use thisLayer()

No mecanismo herdado do ExtendScript, this podia ser usado como formato abreviado para thisLayer. No mecanismo do JavaScript, this se refere ao objeto global e thisLayer deve ser usado. Usar this no mecanismo do JavaScript resultará normalmente no erro “this não é uma função”.

No exemplo a seguir do Legacy ExtendScript, this é usado para criar um vínculo compacto a uma propriedade Posição da camada de texto da propriedade Texto de origem:

this(5)(2).value;

No mecanismo do JavaScript, this deve ser substituído por thisLayer:

thisLayer(5)(2).value;

Usar thisLayer é compatível com ambos os mecanismos de expressão.

O acesso do índice de matrizes da propriedade de Texto de origem a caractere requer .value

No mecanismo de expressão do Legacy ExtendScript, os caracteres de uma propriedade de texto podem ser acessados com anotação entre colchetes como uma matriz:

text.sourceText[0] // Retorna o primeiro caractere do valor de texto da propriedade Texto de origem.

No mecanismo do JavaScript, .value deve ser adicionado para acessar os caracteres:

text.sourceText.value[0] // Retorna o primeiro caractere do valor de texto da propriedade Texto de origem.

Essa sintaxe é compatível com ambos os mecanismos.

Propriedades e métodos de SnakeCase não são permitidos

As propriedades e os métodos obsoletos do SnakeCase (gravados com um underscore (_) em vez do camelCase) não são suportados pelo mecanismo do JavaScript. Em vez disso, as versões de camelCase devem ser usadas, porque são compatíveis com os dois mecanismos. A seguir está uma lista do SnakeCase obsoleto e o camelCase correspondente.

Propriedades de SnakeCase

Propriedades de camelCase

Métodos do SnakeCase

Métodos do camelCase

this_comp

this_layer

this_property

color_depth

has_parent

in_point

out_point

start_time

has_video

has_audio

audio_active

anchor_point

audio_levels

time_remap

casts_shadows

light_transmission

accepts_shadows

accepts_lights

frame_duration

shutter_angle

shutter_phase

num_layers

pixel_aspect

point_of_interest

depth_of_field

focus_distance

blur_level

cone_angle

cone_feather

shadow_darkness

shadow_diffusion

active_camera

thisComp

thisLayer

thisProperty

colorDepth

hasParent

inPoint

outPoint

startTime

hasVideo

hasAudio

audioActive

anchorPoint

audioLevels

timeRemap

castsShadows

lightTransmission

acceptsShadows

acceptsLights

frameDuration

shutterAngle

shutterPhase

numLayers

pixelAspect

pointOfInterest

depthOfField

focusDistance

blurLevel

coneAngle

coneFeather

shadowDarkness

shadowDiffusion

activeCamera

value_at_time()

velocity_at_time()

speed_at_time()

nearest_key()

posterize_time()

look_at()

seed_random()

gauss_random()

ease_in()

ease_out()

rgb_to_hsl()

hsl_to_rgb()

degrees_to_radians()

radians_to_degrees()

from_comp_to_surface()

to_comp_vec()

from_comp_vec()

to_world_vec()

from_world_vec()

to_comp()

from_comp()

to_world()

from_world()

temporal_wiggle()

loop_in_duration()

loop_out_duration()

loop_in()

loop_out()

valueAtTime()

velocityAtTime()

speedAtTime()

nearestKey()

posterizeTime()

lookAt()

seedRandom()

gaussRandom()

easeIn()

easeOut()

rgbToHsl()

hslToRgb()

degreesToRadians()

radiansToDegrees()

fromCompToSurface()

toCompVec()

fromCompVec()

toWorldVec()

fromWorldVec()

toComp()

fromComp()

toWorld()

fromWorld()

temporalWiggle()

loopInDuration()

loopOutDuration()

loopIn()

loopOut()

Uso de eval() com expressões (.jsxbin) binárias

As expressões codificadas no formato binário do ExtendScript (salvas como um arquivo binário. jsxbin do ExtendScript Toolkit CC) não são suportadas pelo mecanismo do JavaScript.

Se você deseja ofuscar uma expressão, use o mecanismo do Legacy ExtendScript ou use um método diferente de ofuscação que seja compatível com o ECMAScript 2018. Alguns métodos de ofuscação podem não ser compatíveis com os dois mecanismos de expressão.

Suporte limitado para o objeto $. (Dólar)

Os métodos e as propriedades do objeto $. (Dólar) são específicos ao ExtendScript e são suportados em maior parte no mecanismo do JavaScript. Esta tabela lista usos não suportadas e suportados do objeto $. (Dólar):

Sem suporte a $.

Com suporte a $.

$.fileName

$.hiResTimes

$.stack

$.evalFile()

$.lista()

$.setenv()

$.getenv()

$.appEncoding

$.buildDate

$.decimalPoint

$.dictionary

$.erro

$.flags

$.includePath

$.level

$.line

$.locale

$.localize

$.memCache

$.os

$.screens

$.strict

$.version

$.build

$.engineName (isso não é compatível com o mecanismo do Legacy ExtendScript)

$.global

Não há suporte para ...reflect.properties, ...reflect.methods e toSource()

reflect.propertiesreflect.methods não são suportados no mecanismo do JavaScript; são métodos específicos ao ExtendScript que não têm nenhum equivalente direto no JavaScript.

toSource() no JavaScript foi descontinuado e não faz parte de nenhum monitoramento padrão.

Para exibir uma lista de propriedades e métodos disponíveis para qualquer propriedade específica do After Effects semelhante ao que foi fornecido pelos métodos acima, use a seguinte expressão em uma propriedade de Texto de origem e vincule-a à sua propriedade desejada, por exemplo, usando o ícone de seleção no lugar de thisProperty na linha 1:

let obj = thisProperty; // Substitui “thisProperty” por um link de propriedade para a propriedade desejada.
let props = [
 
do {
    ObjectetOwnPropertyNames(obj)orEach(prop => {
        if (propsndexOf(prop) === -1) {
            propsush(prop
        }
    }
} while (obj = ObjectetPrototypeOf(obj)
 
propsoin(“\n”           // Retorna uma matriz de sequências de caracteres que lista as propriedades e os métodos disponíveis.

A expressão acima não é compatível com o mecanismo do Legacy ExtendScript. Usa a sintaxe e os métodos não disponíveis no ECMAScript 3.

Requisitos de sintaxe para bibliotecas de expressão .jsx e eval() com o mecanismo JavaScript

Ao usar expressões em uma biblioteca de funções de expressões .jsx ou quando uma expressão é chamada de dentro de eval(), determinadas sintaxes precisam ser modificadas:

Um prefixo thisLayer. ou thisProperty. explícito deve ser adicionado a qualquer método ou atributo nativo ou que não é chamado explicitamente uma camada ou propriedade. O prefixo instrui o mecanismo do JavaScript que o objeto está chamando o método ou atributo.

Operações matemáticas em valores de matriz como Posição devem ser calculados usando matemática vetorial ou usando funções de looping para atuar em cada item da matriz. Operadores matemáticos sobrecarregados como posição + [100,100] não avaliarão.

Ao usar o mecanismo JavaScript, as expressões são processadas antes da avaliação para fazer parte da sintaxe de expressões do Legacy ExtendScript legível pelo novo mecanismo. No entanto, essas tarefas de pré-processamento não são executadas ao avaliar expressões de uma biblioteca de funções de expressões .jsx ou quando uma expressão é chamada de dentro de eval(). As modificações acima da sintaxe devem ser feitas manualmente para esses casos. Todas essas modificações da sintaxe são compatíveis com versões anteriores com o mecanismo do Legacy ExtendScript, portanto, uma biblioteca de expressões .jsx escrita para trabalhar com o mecanismo JavaScript também trabalhará com o mecanismo do Legacy ExtendScript.

Dica de desempenho: devido à falta de pré-processamento, chamar expressões complexas de uma biblioteca .jsx com essa sintaxe e o mecanismo do JavaScript, pode resultar em uma melhoria no desempenho, comparado a chamar a mesma expressão diretamente em uma propriedade.

Prefixar explicitamente métodos e atributos nativos com thisLayer. ou thisProperty.

A tabela a seguir lista os métodos e atributos que exigem um prefixo. Por exemplo, o tempo deve ser escrito como thisLayer.time, e wiggle() deve ser escrito como thisProperty.wiggle(). 

Esses prefixos são necessários somente em casos em que o atributo ou método já não está sendo chamado explicitamente em outra camada ou propriedade. Por exemplo, ao chamar thisComp.layer(1).hasParent, adicionar thisLayer. não é obrigatório pois .hasParent já está sendo chamado explicitamente em layer(1).

Métodos que requerem thisLayer.

Atributos que requerem thisLayer.

Métodos que requerem thisProperty.

Atributos que requerem thisProperty.

comp()
footage()
posterizeTime()
add()
sub()
mul()
div()
clamp()
length()
dot()
normalize()
cross()
lookAt()
timeToFrames()
framesToTime()
timeToTimecode()
timeToFeetAndFrames()
timeToNTSCTimecode()
timeToCurrentFormat()
seedRandom()
random()
gaussRandom()
noise()
degreesToRadians()
radiansToDegrees()
linear()
ease()
easeIn()
easeOut()
rgbToHsl()
hslToRgb()
hexToRgb()
mask()
sourceRectAtTime()
sourceTime()
sampleImage()
toComp()
fromComp()
toWorld()
fromWorld()
toCompVec()
fromCompVec()
toWorldVec()
fromWorldVec()
fromCompToSurface()

time
source
thisProject
colorDepth
transform
anchorPoint
position
scale
rotation
opacity
orientation
rotationX
rotationY
rotationZ
lightTransmission
castsShadows
acceptsShadows
acceptsLights
ambient
diffuse
specular
specularIntensity
shininess
specularShininess
metal
audioLevels
timeRemap
marker
name
width
height
index
parent
hasParent
inPoint
outPoint
startTime
hasVideo
hasAudio
active
enabled
audioActive
cameraOption
pointOfInterest
zoom
depthOfField
focusDistance
aperature
blurLevel
irisShape
irisRotation
irisRoundness
irisAspectRatio
irisDiffractionFringe
highlightGain
highlightThreshold
highlightSaturation
lightOption
intensity
color
coneAngle
coneFeather
shadowDarkness
shadowDiffusion

valueAtTime()
velocityAtTime()
speedAtTime()
wiggle()
temporalWiggle()
smooth()
loopIn()
loopOut()
loopInDuration()
loopOutDuration()
key()
nearestKey()
propertyGroup()
points()
inTangents()
outTangents()
isClosed()
pointsOnPath()
tangentOnPath()
normalOnPath()
createPath()

velocity
speed
numKeys
propertyIndex

Substituição de operadores matemáticos com funções matemáticas vetoriais

Os mecanismos Javascript e LegacyExtendScript permitem sobrecarga de operadores matemáticos para matrizes usando sintaxes como posição + [100,100], mas isso não funciona para expressões em uma biblioteca de funções de expressão .jsx ou para dentro de eval().

Para executar a matemática em propriedades de matriz como Posição, Escala etc., os equivalentes matemáticos de vetores devem ser usados para adição, subtração, multiplicação e divisão. As funções matemáticas vetoriais também funcionarão para números regulares, portanto uma função que pode ser chamada em propriedades de dados de qualquer um dos dois tipos de dados deve usar as funções matemáticas vetoriais.

Observação:

O prefixo thisLayer. deve ser usado com as funções matemáticas de vetores.

  • Adição: thisLayer.add(vec1, vec2)
  • Subtração: thisLayer.sub(vec1, vec2)
  • Multiplicação: thisLayer.mul(vec, amount)
  • Divisão: thisLayer.div(vec, amount)

Abaixo estão alguns exemplos de expressões usando a matemática padrão e a matemática vetorial atualizada. As expressões matemáticas de vetores também usam os prefixos thisLayer. ou thisProperty. apropriados quando necessário.

Para localizar a diferença entre um wiggle() e o valor de uma propriedade de Posição:

// Matemática padrão:
wiggle() - value;


// Matemática vetorial:
thisLayer.sub( thisProperty.wiggle(), value );

Para interpolar entre dois valores, de modo similar a linear(), mas com um intervalo estendido além do mínimo e o máximo definido:

// Matemática padrão:
value1 + ( ( t - tMin ) / ( tMax - tMin ) ) * ( value2 - value1 );


// Matemática vetorial:
thisLayer.add( value1, thisLayer.mul( thisLayer.div( thisLayer.sub( t, tMin ), thisLayer.sub( tMax, tMin ) ), thisLayer.sub( value2, value1 ) ) );

Para repetir uma propriedade de Posição para dentro e para fora:

// Matemática padrão:
loopIn( “cycle” ) + loopOut( “cycle” ) - value;
 
 
Matemática vetorial:
thisLayerub( thisLayerdd( thisPropertyoopIn( “cycle” ), thisPropertyoopOut( “cycle” ) ), value 

Receba ajuda com mais rapidez e facilidade

Novo usuário?