Tutorial · 21/10/2026
Expression After Effects cơ bản: wiggle, loopOut, time cho người mới

Expression After Effects là gì, cách thêm bằng Alt + click đồng hồ, wiggle, time, linear, loopOut 4 kiểu, pick whip và phép tính, kèm mã từ trợ giúp của Adobe và đồ thị minh hoạ.
Expression trong After Effects là một đoạn mã JavaScript ngắn gắn vào một thuộc tính có thể animate (Position, Rotation, Opacity…), để thuộc tính đó tự tính giá trị theo thời gian thay vì phải đặt hàng chục, hàng trăm keyframe bằng tay. Ba expression người mới dùng nhiều nhất là wiggle() để rung ngẫu nhiên, loopOut() để lặp keyframe và time để chuyển động đều theo thời gian. Cách thêm: Alt + click (macOS: Option + click) vào đồng hồ bấm giờ cạnh thuộc tính rồi gõ biểu thức. Bài này giải thích từng expression, kèm mã lấy từ các trang trợ giúp của Adobe đọc ngày 21/10/2026 và đồ thị do ColorME tính để bạn hình dung kết quả.
| Expression | Gắn vào | Kết quả |
|---|---|---|
wiggle(2,30) | Position | Rung 2 lần mỗi giây, lệch tối đa 30 px |
loopOut("cycle") | Thuộc tính có keyframe | Lặp lại đoạn keyframe tới hết layer |
time*90 | Rotation | Quay 90 độ mỗi giây, không cần keyframe |
linear(time, 0, 6, 20, 80) | Opacity | Tăng đều từ 20% lên 80% trong 6 giây đầu |
value+90 | Rotation | Cộng thêm 90 độ vào giá trị gốc |
Expression là gì, khác script thế nào?
Theo trang "Expression basics" của Adobe, expression là một đoạn mã JavaScript nhỏ gắn vào thuộc tính có thể animate, trả về một giá trị cho một thuộc tính của layer tại một thời điểm. Khác với script (ra lệnh cho phần mềm làm gì đó), expression ra lệnh cho một thuộc tính làm gì đó. Ví dụ quả bóng đang chạy từ trái sang phải, bạn muốn nó rung lên: thay vì đặt keyframe Position, chỉ cần gắn expression wiggle.
Ngôn ngữ expression dựa trên JavaScript chuẩn, nhưng Adobe ghi rõ bạn không cần biết JavaScript để bắt đầu: có thể tạo expression bằng pick whip hoặc chép các ví dụ đơn giản rồi sửa lại. Expression giúp tự động hoá các chuyển động như rung, giật, nảy; liên kết các thuộc tính với nhau (ví dụ Rotation và Position); điều khiển nhiều layer từ vài thanh trượt; làm biểu đồ, infographic động và lưu thành mẫu để dùng lại. Xem thêm định nghĩa expression trong thư viện thuật ngữ của ColorME.
Cách thêm expression trong After Effects

Thêm expression và các nút trên Timeline. Board do ColorME dựng theo trang trợ giúp của Adobe.
- Tạo một composition, rồi Layer > New > Solid để có một layer solid.
- Trong bảng Timeline, chọn layer và bấm phím P để hiện thuộc tính Position.
- Alt + click (Windows) hoặc Option + click (macOS) vào đồng hồ bấm giờ cạnh Position. After Effects gắn một biểu thức mặc định (ở Position là
transform.position). - Bấm vào ô biểu thức trong Timeline và gõ biểu thức bạn muốn, ví dụ
wiggle(3,50).
Sau khi thêm, giá trị của thuộc tính chuyển từ màu xanh sang màu đỏ: màu đỏ nghĩa là đang có expression chạy. Cạnh đồng hồ xuất hiện 4 nút: nút dấu bằng (=) để bật, tắt expression (màu xanh là đang bật); nút xem giá trị theo thời gian trong Graph Editor; nút xoắn ốc là pick whip để liên kết; và nút mở menu Expression Language để chèn nhanh các phương thức, thuộc tính có sẵn. Ô biểu thức hoạt động như ô chữ thường: chép, dán, bấm Enter để xuống dòng.
wiggle(): làm layer rung ngẫu nhiên

wiggle(2,30) và cách điều khiển độ rung bằng Slider Control. Đường đi minh hoạ do ColorME tính.
Theo trang "Expression examples" của Adobe, wiggle là một trong những expression phổ biến nhất, giúp cảnh trông tự nhiên hơn. Cú pháp wiggle(tần số, biên độ): số thứ nhất là số lần rung mỗi giây, số thứ hai là độ lớn của rung. Vì vậy wiggle(2,30) trên Position làm layer rung 2 lần mỗi giây, lệch tối đa 30 px theo mọi hướng.
Wiggle dùng giá trị gốc (trước expression) làm tâm: nếu thuộc tính đang có keyframe, wiggle tạo thêm chuyển động phụ đè lên chuyển động gốc. Adobe lấy ví dụ wiggle(10, 10) trên một thuộc tính có giá trị 0 sẽ dao động trong khoảng -10 đến 10.
Điều khiển độ rung bằng Slider Control
- Thêm hiệu ứng Slider Control cho layer và đặt tên là Wiggle Amount.
- Gắn expression sau vào Position của cùng layer:
var wiggleAmount = effect("Wiggle Amount")("Slider");
wiggle( 4, wiggleAmount );
Giờ bạn đặt keyframe cho thanh trượt để layer bắt đầu rung, rung mạnh dần rồi dừng đúng lúc, thay vì rung suốt cả layer. Xem thêm expression controls và wiggle expression.
time và linear(): chuyển động đều theo thời gian

time*90 và linear(time, 0, 6, 20, 80), đồ thị do ColorME tính.
Theo trang tham chiếu ngôn ngữ expression của Adobe, time trả về thời gian của composition (tính bằng giây) tại thời điểm biểu thức được tính. Vì vậy time*90 trên Rotation cho layer quay 90 độ mỗi giây, quay mãi không cần keyframe nào. Đổi 90 thành số lớn hơn để quay nhanh hơn, thêm dấu trừ để quay ngược chiều.
linear(t, tMin, tMax, value1, value2) chuyển một khoảng giá trị sang khoảng khác. Ví dụ của Adobe: linear(time, 0, 6, 20, 80) trên Opacity làm độ mờ tăng đều từ 20% lên 80% trong khoảng 0 đến 6 giây; trước 0 giây giữ 20, sau 6 giây giữ 80. Muốn chuyển động mềm hơn ở hai đầu, dùng ease() với cùng các tham số: tốc độ bằng 0 ở điểm đầu và điểm cuối.
Layer chạy vòng tròn quanh tâm
Ví dụ khác trong trang của Adobe dùng time với hàm sin, cos để layer chạy vòng tròn quanh tâm composition (gắn vào Position):
var centerOfComp = [ ( thisComp.width / 2 ), ( thisComp.height / 2) ];
var circleOverTime = [ Math.sin( time ) * 50, -Math.cos( time ) * 50 ];
centerOfComp + circleOverTime;
loopOut(): lặp keyframe tới hết layer

4 kiểu loopOut với hai keyframe kiểu ease, đồ thị do ColorME tính.
loopOut lặp lại đoạn keyframe sau keyframe cuối cùng, chạy tới điểm Out của layer. Ví dụ của Adobe: đặt một keyframe Rotation ở góc bắt đầu, một keyframe ở góc kết thúc, rồi gắn loopOut("cycle", 0); để layer tiếp tục quay sau keyframe cuối.
Số thứ hai là số keyframe đưa vào vòng lặp, đếm lùi từ keyframe cuối. Bỏ trống hoặc để 0 thì lặp toàn bộ keyframe; để 1 thì chỉ lặp đoạn giữa keyframe cuối và keyframe trước đó. Theo bảng trong trang tham chiếu của Adobe, có 4 kiểu lặp:
- cycle (mặc định): lặp lại đoạn đã chọn.
- pingpong: lặp, xen kẽ chạy tới và chạy lùi. Trang ví dụ của Adobe viết là "ping-pong".
- offset: lặp và cộng thêm chênh lệch giữa đầu và cuối đoạn sau mỗi vòng, nên giá trị tăng dần.
- continue: không lặp, tiếp tục chuyển động theo tốc độ ở keyframe cuối. Nếu keyframe cuối dừng hẳn (kiểu ease), giá trị sẽ đứng yên như đồ thị trong hình.
Đồ thị trong hình do mình tính với hai keyframe kiểu ease, để bạn thấy rõ khác biệt giữa 4 kiểu; không phải đồ thị xuất từ After Effects. Có thêm loopIn() để lặp phần trước keyframe đầu tiên. Xem loopOut expression.
Thêm 2 expression hay dùng: nảy quán tính và giật khung
Overshoot: nảy nhẹ khi dừng
Trang ví dụ của Adobe có expression overshoot (thường gọi là inertial bounce): dựa vào keyframe sẵn có của layer để tạo cú nảy tự nhiên khi chuyển động dừng, theo đúng hướng layer đang đi. Cách làm: đặt keyframe cho Position, rồi gắn expression sau vào Position:
var amp = 40;
var freq = 30;
var decay = 50;
var nK = nearestKey(time);
var n = (nK.time <= time) ? nK.index : --nK.index;
var t = (n === 0) ? 0 : time - key(n).time;
if ( n > 0 && t < 1 ) {
var v = velocityAtTime( key( n ).time - thisComp.frameDuration /10 );
value + v * amp * .001 * Math.sin(freq * .1 * t * 2 * Math.PI) / Math.exp(decay * .1 * t);
} else {
value;
}
amp là độ nảy, freq là tần số dao động, decay là độ tắt dần; Adobe gợi ý nối các giá trị này với Slider Control để xem trước nhiều thiết lập. Mình đã bỏ các dòng chú thích trong mã gốc cho gọn, phần tính toán giữ nguyên.
posterizeTime(): chuyển động giật như stop motion
Theo trang tham chiếu của Adobe, posterizeTime(framesPerSecond) đặt tốc độ khung hình riêng cho thuộc tính, thấp hơn của composition. Ví dụ posterizeTime(1); random() đổi giá trị ngẫu nhiên mỗi giây một lần. Đặt trước wiggle, ví dụ posterizeTime(8); wiggle(8,20), sẽ cho cảm giác rung giật như hoạt hình vẽ tay, hợp với chữ động phong cách thủ công.
Bài tập 15 phút với expression
- Logo rung nhẹ: gắn
wiggle(1,5)vào Position của một logo để logo "thở" nhẹ trên nền. - Bánh xe quay: gắn
time*180vào Rotation của một hình tròn có nan. - Nút bấm nhấp nháy: đặt keyframe Scale 100 rồi 110, gắn
loopOut("pingpong")để nút phồng lên, thu lại liên tục. - Chữ hiện dần: gắn
linear(time, 0, 2, 0, 100)vào Opacity để chữ hiện ra trong 2 giây đầu.
Làm xong bốn bài này, bạn đã dùng đủ wiggle, time, loopOut và linear, đủ cho phần lớn chuyển động phụ trong motion graphics thường gặp.
Pick whip và phép tính đơn giản

Pick whip liên kết thuộc tính và các phép tính đơn giản.
Pick whip giúp liên kết thuộc tính mà không cần gõ mã. Ví dụ đồng hồ 3 kim của Adobe: đặt keyframe Rotation cho kim lớn nhất, ở kim thứ hai chọn Rotation, vào Animation > Add Expression rồi kéo pick whip sang Rotation của kim lớn. Biểu thức thisComp.layer("circle").rotation xuất hiện; thêm *12 ở cuối để kim này quay nhanh gấp 12 lần, kim thứ ba thêm *24.
Adobe gợi ý cách bắt đầu tốt là tạo expression bằng pick whip rồi chỉnh bằng phép tính: + cộng, - trừ, * nhân, / chia, *-1 để làm ngược lại (ví dụ quay ngược chiều kim đồng hồ). Từ khoá value lấy giá trị gốc của thuộc tính: value+90 trên Rotation có keyframe từ 0 đến 45 sẽ chạy từ 90 đến 135.
Lưu ý và lỗi thường gặp

Lưu ý và lỗi thường gặp khi dùng expression.
- Chọn engine: File > Project Settings, tab Expressions, chọn Expressions Engine là JavaScript hoặc Legacy ExtendScript. Theo Adobe, project lưu bằng phiên bản cũ mặc định dùng Legacy ExtendScript, và engine JavaScript có thể đánh giá expression khi render nhanh tới 5 lần.
- if/else phải đúng cú pháp: với engine JavaScript, cú pháp if/else phải viết theo JavaScript chuẩn.
- Expression không chạy: kiểm tra nút = đang bật và giá trị đã chuyển sang màu đỏ.
- Rung quá mạnh hoặc quá nhanh: giảm số thứ hai (biên độ) hoặc số thứ nhất (tần số) của wiggle.
- Lặp sai đoạn: kiểm tra số thứ hai của loopOut; 0 là lặp tất cả keyframe.
- Không lặp được: theo Adobe, các phương thức lặp không dùng cho thuộc tính không biểu diễn bằng số đơn giản, như Source Text hay hình dạng path.
Expression là bước tiếp theo sau khi bạn đã quen keyframe và Graph Editor. Muốn học After Effects bài bản, từ animation cơ bản tới motion graphics, xem khoá After Effects của ColorME; có thể đọc thêm giáo trình After Effects cơ bản.
Câu hỏi thường gặp
Expression trong After Effects là gì?
Là đoạn mã JavaScript ngắn gắn vào một thuộc tính có thể animate, giúp thuộc tính tự tính giá trị theo thời gian thay vì đặt nhiều keyframe bằng tay.
Cách thêm expression trong After Effects?
Alt + click (Windows) hoặc Option + click (macOS) vào đồng hồ bấm giờ cạnh thuộc tính trong bảng Timeline, rồi gõ biểu thức vào ô vừa xuất hiện.
wiggle(2,30) nghĩa là gì?
Layer rung 2 lần mỗi giây với biên độ 30; trên Position là lệch tối đa 30 px theo mọi hướng.
loopOut có những kiểu nào?
Bốn kiểu: cycle (lặp lại), pingpong (tới rồi lùi), offset (lặp và cộng dồn) và continue (không lặp, tiếp tục theo tốc độ ở keyframe cuối).
Có cần biết lập trình để dùng expression không?
Không bắt buộc. Theo Adobe, bạn có thể bắt đầu bằng pick whip hoặc chép các ví dụ đơn giản rồi sửa số cho hợp với cảnh của mình.
Tác giảCOLOR ME














