Adobe 12040118 Tutorial - Page 559

Expression errors, Indices and labels, Expression time

Page 559 highlights

Indices and labels Indexing for Layer, Effect, and Mask elements in After Effects starts from 1. For example, the first layer in the Timeline panel is layer(1). Generally, it is best to use the name of a layer, effect, or a mask instead of a number to avoid confusion and errors if the layer, effect, or mask is moved, or if the arguments are changed during product updates and upgrades. When you use a name, always enclose it in straight quotes. For example, the first of these expressions is easier to understand than the second expression, and the first expression will continue to work even if you change the order of effects: effect("Colorama").param("Get Phase From") effect(1).param(2) Expression time Time within an expression is always in composition time (not layer time) and is measured in seconds. The default time for any expression is the current composition time at which the expression is being evaluated. The following expressions both use the default composition time and return the same values: thisComp.layer(1).position thisComp.layer(1).position.valueAtTime(time) To use a relative time, add an incremental time value to the time argument. For example, to get the Position value 5 seconds before the current time, use the following expression: thisComp.layer(1).position.valueAtTime(time-5) Default time references to properties in nested compositions use the original default composition time, not remapped time. However, if you use the source function to retrieve a property, the remapped time is used. For example, if the source of a layer in the containing composition is a nested composition, and in the containing composition you have remapped time, when you get the position values of a layer in the nested composition with the following expression, the position values use the default time of the composition: comp("nested composition").layer(1).position However, if you access layer 1 using the source function, the position values use the remapped time: thisComp.layer("nested composition").source.layer(1).position Note: If you use a specific time in an expression, After Effects ignores the remapped time. Because expressions operate on time in units of seconds (not frames), you sometimes need to use time conversion methods to convert time values to perform operations on frames. (See Time conversion methods (expression reference).) Expression errors To the top If an expression cannot be processed, After Effects displays a message explaining the error and automatically disables the expression. A yellow warning icon appears next to the expression; click the warning icon to view the error message again. To show expressions that have errors, select one or more layers, right-click (Windows) or Control-click (Mac OS) a selected layer in the Timeline panel, and choose Reveal Expression Errors from the context menu. Some expressions rely on the names of layers or properties in your project; if you change the name of a layer or property that is involved in an expression, After Effects attempts to update the expression to use the new name. However, in some complex cases, After Effects is unable to automatically update the expression, in which case the expression may produce an error message, and you must update the expression yourself. Important: If you are running After Effects in a language other than the one for which an expression was written, or if you have changed the names of items (such as layers, effects, or other property groups), then the expression may not work until you modify the expression to use the new names or the strings that match the language in which you are running After Effects. Because the examples in this document were created for the default state of After Effects running in English, some examples in this document will not work without such modification. Note: The arguments for some After Effects effects have changed from the arguments in previous versions. If you have existing expressions that use argument index references rather than argument names, you may need to update the expressions to use argument names. Precomposing multiple layers can also cause expressions that refer to a property of one of the layers to produce an error, requiring you to update these expressions to refer to the layer within the new composition. This is especially a concern with expressions that use thisComp instead of referring to a composition by its name. (See About precomposing and nesting.) Jeff Almasol provides a script on his redefinery website with which you can replace instances of thisComp with explicit references to a composition's name. More Help topics

  • 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
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
  • 464
  • 465
  • 466
  • 467
  • 468
  • 469
  • 470
  • 471
  • 472
  • 473
  • 474
  • 475
  • 476
  • 477
  • 478
  • 479
  • 480
  • 481
  • 482
  • 483
  • 484
  • 485
  • 486
  • 487
  • 488
  • 489
  • 490
  • 491
  • 492
  • 493
  • 494
  • 495
  • 496
  • 497
  • 498
  • 499
  • 500
  • 501
  • 502
  • 503
  • 504
  • 505
  • 506
  • 507
  • 508
  • 509
  • 510
  • 511
  • 512
  • 513
  • 514
  • 515
  • 516
  • 517
  • 518
  • 519
  • 520
  • 521
  • 522
  • 523
  • 524
  • 525
  • 526
  • 527
  • 528
  • 529
  • 530
  • 531
  • 532
  • 533
  • 534
  • 535
  • 536
  • 537
  • 538
  • 539
  • 540
  • 541
  • 542
  • 543
  • 544
  • 545
  • 546
  • 547
  • 548
  • 549
  • 550
  • 551
  • 552
  • 553
  • 554
  • 555
  • 556
  • 557
  • 558
  • 559
  • 560
  • 561
  • 562
  • 563
  • 564
  • 565
  • 566
  • 567
  • 568
  • 569
  • 570
  • 571
  • 572
  • 573
  • 574
  • 575
  • 576
  • 577
  • 578
  • 579
  • 580
  • 581
  • 582
  • 583
  • 584
  • 585
  • 586
  • 587
  • 588
  • 589
  • 590
  • 591
  • 592
  • 593
  • 594
  • 595
  • 596
  • 597
  • 598
  • 599
  • 600
  • 601
  • 602
  • 603
  • 604
  • 605
  • 606
  • 607
  • 608
  • 609
  • 610
  • 611
  • 612
  • 613
  • 614

To the top
Indices and labels
Indexing for Layer, Effect, and Mask elements in After Effects starts from 1. For example, the first layer in the Timeline panel is layer(1).
Generally, it is best to use the name of a layer, effect, or a mask instead of a number to avoid confusion and errors if the layer, effect, or mask is
moved, or if the arguments are changed during product updates and upgrades. When you use a name, always enclose it in straight quotes. For
example, the first of these expressions is easier to understand than the second expression, and the first expression will continue to work even if
you change the order of effects:
effect("Colorama").param("Get Phase From")
effect(1).param(2)
Expression time
Time within an expression is always in composition time (not layer time) and is measured in seconds. The default time for any expression is the
current composition time at which the expression is being evaluated. The following expressions both use the default composition time and return
the same values:
thisComp.layer(1).position
thisComp.layer(1).position.valueAtTime(time)
To use a relative time, add an incremental time value to the time argument. For example, to get the Position value 5 seconds before the current
time, use the following expression:
thisComp.layer(1).position.valueAtTime(time-5)
Default time references to properties in nested compositions use the original default composition time, not remapped time. However, if you use the
source function to retrieve a property, the remapped time is used.
For example, if the source of a layer in the containing composition is a nested composition, and in the containing composition you have remapped
time, when you get the position values of a layer in the nested composition with the following expression, the position values use the default time
of the composition:
comp("nested composition").layer(1).position
However, if you access layer 1 using the source function, the position values use the remapped time:
thisComp.layer("nested composition").source.layer(1).position
Note:
If you use a specific time in an expression, After Effects ignores the remapped time.
Because expressions operate on time in units of seconds (not frames), you sometimes need to use time conversion methods to convert time
values to perform operations on frames. (See Time conversion methods (expression reference).)
Expression errors
If an expression cannot be processed, After Effects displays a message explaining the error and automatically disables the expression. A yellow
warning icon
appears next to the expression; click the warning icon to view the error message again.
To show expressions that have errors, select one or more layers, right-click (Windows) or Control-click (Mac OS) a selected layer in the
Timeline panel, and choose Reveal Expression Errors from the context menu.
Some expressions rely on the names of layers or properties in your project; if you change the name of a layer or property that is involved in an
expression, After Effects attempts to update the expression to use the new name. However, in some complex cases, After Effects is unable to
automatically update the expression, in which case the expression may produce an error message, and you must update the expression yourself.
Important:
If you are running After Effects in a language other than the one for which an expression was written, or if you have changed the
names of items (such as layers, effects, or other property groups), then the expression may not work until you modify the expression to use the
new names or the strings that match the language in which you are running After Effects. Because the examples in this document were created for
the default state of After Effects running in English, some examples in this document will not work without such modification.
Note:
The arguments for some After Effects effects have changed from the arguments in previous versions. If you have existing expressions that
use argument index references rather than argument names, you may need to update the expressions to use argument names.
Precomposing multiple layers can also cause expressions that refer to a property of one of the layers to produce an error, requiring you to update
these expressions to refer to the layer within the new composition. This is especially a concern with expressions that use thisComp instead of
referring to a composition by its name. (See About precomposing and nesting.)
Jeff Almasol provides a script on his
redefinery website
with which you can replace instances of thisComp with explicit references to a
composition’s name.
More Help topics