Skip to content

Commit cd035ca

Browse files
authored
Merge pull request #7 from docsforadobe/colombo/beta-november
Add new APIs in 26.0 Beta
2 parents 6e48e73 + b50cbd8 commit cd035ca

5 files changed

Lines changed: 223 additions & 0 deletions

File tree

docs/introduction/changelog.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,21 @@ What's new and changed for expressions?
44

55
---
66

7+
## [After Effects 26.0 (Beta)](https://helpx.adobe.com/after-effects/using/whats-new.html) (November 2025)
8+
9+
- Added: Expression access to variable font axes through text animators
10+
- Added: [Variable Font Axes](../text/variable-fonts.md) - Access variable font axes (Weight, Width, Slant, etc.) via `text.animator("Animator Name").property.fontAxis[Tag]`
11+
- Added: Property methods for finding neighboring keyframes and markers
12+
- Added: [Property.previousKey()](../objects/property.md#previouskey)
13+
- Added: [Property.nextKey()](../objects/property.md#nextkey)
14+
- Added: Expression access to dropdown menu text strings
15+
- Added: [Dropdown Menus](../objects/dropdown.md)
16+
- Added: [Dropdown Menu.items](../objects/dropdown.md#items)
17+
- Added: [Dropdown Menu.text](../objects/dropdown.md#text)
18+
- Added: [Dropdown Menu.textAtTime()](../objects/dropdown.md#textattime)
19+
20+
---
21+
722
## [After Effects 25.0](https://helpx.adobe.com/after-effects/using/whats-new/2025.html) (October 2024)
823

924
Added many new text style properties and methods for both characters and paragraphs, as well as the ability to control per-character styling through expressions.

docs/objects/dropdown.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# Dropdown Menus
2+
3+
This category contains information relating to dropdown menu properties.
4+
5+
!!! note
6+
These APIs were added in After Effects (Beta) 26.0 and are subject to change while they remain in Beta.
7+
8+
In expressions, the `.value` of a dropdown menu is returned as an index (a number). This is true of both customized Menu properties of Dropdown Menu Controls and dropdown menus of other effects and layers. **The strings in dropdown menu properties of effects and layers are also accessible via the properties/methods below.**
9+
10+
On this page, `effect("Dropdown Menu Control")("Menu")` is used as a sample on how to call these items; however, note that any method that returns a dropdown menu [Property](../objects/property.md) will work.
11+
12+
**Notes**
13+
14+
- These APIs are available only in expressions using the JavaScript expression engine.
15+
16+
- The text of `Layer Control` dropdowns is not accessible with these APIs. If you need the selected layer's name, you can use the `.name` property of the layer returned by the Layer Control.
17+
18+
!!! warning
19+
We recommend continuing to use the index of dropdown menus when driving expression logic (versus matching the strings), since indexes will remain unchanged when the language of After Effects changes.
20+
21+
---
22+
23+
## Attributes
24+
25+
### items
26+
27+
`effect("Dropdown Menu Control")("Menu").items`
28+
29+
#### Description
30+
31+
Returns an array of all the text strings in a dropdown menu property.
32+
33+
#### Type
34+
35+
Array of Strings
36+
37+
#### Example
38+
39+
**Show all the strings in a dropdown on separate lines:**
40+
41+
```js
42+
const menu = effect("Dropdown Menu Control")("Menu");
43+
const allStrings = menu.items;
44+
45+
allStrings.join("\n");
46+
```
47+
48+
---
49+
50+
### text
51+
52+
`effect("Dropdown Menu Control")("Menu").text`
53+
54+
#### Description
55+
56+
Returns the currently-active text string of a dropdown menu property at the current time.
57+
58+
#### Type
59+
60+
String
61+
62+
#### Example
63+
64+
**Show the selected dropdown text directly in a Text layer:**
65+
66+
```js
67+
effect("Dropdown Menu Control")("Menu").text;
68+
```
69+
70+
**Show the current Fractal Type from the native Fractal Noise effect:**
71+
72+
```js
73+
effect("ADBE Fractal Noise")("ADBE Fractal Noise-0001").text;
74+
```
75+
76+
---
77+
78+
## Methods
79+
80+
### textAtTime()
81+
82+
`effect("Dropdown Menu Control")("Menu").textAtTime(time)`
83+
84+
#### Description
85+
86+
Returns the text string of a dropdown menu property at the specified time, in seconds.
87+
88+
This is effectively the same as how `valueAtTime()` relates to `value`, in that `text` will always return the dropdown string as the current time, and `timeAtTime()` can return the string at a specific time.
89+
90+
#### Parameters
91+
92+
| Parameter | Type | Description |
93+
| --------- | ------ | ------------------------------------------------- |
94+
| `time` | Number | The time, in seconds, to get the text string from |
95+
96+
#### Returns
97+
98+
String
99+

docs/objects/property.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,69 @@ twoSecondKey.value;
336336

337337
---
338338

339+
### nextKey()
340+
341+
`thisLayer.position.nextKey(time)`
342+
343+
!!! note
344+
This functionality was added in After Effects (Beta) 26.0 and is subject to change while it remains in Beta.
345+
346+
#### Description
347+
348+
Returns the keyframe or marker after the specified time. If the specified time is after the last keyframe or marker, returns the last keyframe or marker.
349+
350+
This method is available only in expressions using the JavaScript expression engine.
351+
352+
#### Parameters
353+
354+
| Parameter | Type | Description |
355+
| --------- | ------ | ------------------------------------------------- |
356+
| `time` | Number | The time, in seconds, to find the next key from |
357+
358+
#### Returns
359+
360+
Key or MarkerKey
361+
362+
---
363+
364+
### previousKey()
365+
366+
`thisLayer.position.previousKey(time)`
367+
368+
!!! note
369+
This functionality was added in After Effects (Beta) 26.0 and is subject to change while it remains in Beta.
370+
371+
#### Description
372+
373+
Returns the keyframe or marker at or before the specified time. If none exist before the specified time, returns the first keyframe or marker.
374+
375+
This method is available only in expressions using the JavaScript expression engine.
376+
377+
#### Parameters
378+
379+
| Parameter | Type | Description |
380+
| --------- | ------ | ------------------------------------------------------ |
381+
| `time` | Number | The time, in seconds, to find the previous key from |
382+
383+
#### Returns
384+
385+
Key or MarkerKey
386+
387+
#### Example
388+
389+
**Trigger property's keyframes at each layer marker:**
390+
391+
```js
392+
const animDuration = key(numKeys).time - key(1).time;
393+
const animTime = time - marker.previousKey(time).time;
394+
395+
const animRemap = linear(animTime, 0, animDuration, key(1).time, key(numKeys).time);
396+
397+
valueAtTime(animRemap);
398+
```
399+
400+
---
401+
339402
### propertyGroup()
340403

341404
`thisLayer.position.propertyGroup([countUp=1])`

docs/text/variable-fonts.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Variable Font Axes
2+
3+
`text.animator("Animator Name").property.fontAxis[Tag]`
4+
5+
!!! note
6+
This functionality was added in After Effects (Beta) 26.0 and is subject to change while it remains in Beta.
7+
8+
Variable font axes can be accessed in expressions through Text Animator groups. Each added axis is accessed using the pattern `fontAxis[Tag]` where `Tag` is the **4-character axis tag**.
9+
10+
The axis tag is a 4-character identifier (e.g., `Wght` for Weight, `Wdth` for Width). See list below for common identifiers.
11+
12+
#### Common Axis Tags
13+
14+
- `fontAxisWght` - Weight
15+
- `fontAxisWdth` - Width
16+
- `fontAxisSlnt` - Slant
17+
- `fontAxisItal` - Italic
18+
- `fontAxisOpsz` - Optical Size
19+
20+
Returns the value of a variable font axis property from a text animator.
21+
22+
!!! note
23+
Axes must exist on the variable font to have any effect. Fonts may also include custom axes with 4-character uppercase tags.
24+
25+
#### Type
26+
27+
[Property](../objects/property.md) (Number)
28+
29+
---
30+
31+
## Examples
32+
33+
Reference a variable font axis from another property:
34+
35+
```js
36+
text.animator("Animator 1").property.fontAxisWght
37+
```
38+
39+
Link layer opacity to font weight:
40+
41+
```js
42+
const weight = text.animator("Animator 1").property.fontAxisWght;
43+
weight / 10;
44+
```

mkdocs.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ nav:
3333
- Effect: objects/effect.md
3434
- Mask: objects/mask.md
3535
- Property: objects/property.md
36+
- Dropdown Menus: objects/dropdown.md
3637
- Marker Property: objects/marker-property.md
3738
- Path Property: objects/path-property.md
3839
- Key: objects/key.md
@@ -48,6 +49,7 @@ nav:
4849
- Text: text/text.md
4950
- Source Text: text/sourcetext.md
5051
- Text Style: text/style.md
52+
- Variable Fonts: text/variable-fonts.md
5153

5254
#### Additional config below - modify sparingly!
5355

0 commit comments

Comments
 (0)