لیست کدهای اکسپرشن افتر افکت (30 مورد)
کدنویسی توی نرم افزار افتر افکت می تونه زمان بر باشه، مخصوصاً اگه به تازگی با افتر افکت آشنا شده باشین. توی این مقاله من لیستی از کدهای اکسپرشن افتر افکت رو گروه بندی کردم و به همراه نمونه نمایشی اون براتون قرار دادم. این کار به شما کمک میکنه تا نحوه استفاده از کدها و تطبیق اونا با انیمیشن رو به خوبی بتونین درک کنین.
هدف من از نوشتن این مقاله ایجاد یه مرجع برای کدهای اکسپرشن افتر افکت هستش تا انیماتورها بتونن به راحتی از اون استفاده می کنن و قصد دارم دائماً این مقاله رو مدام به روز کنم تا افراد مبتدی و متخصص بتونن به خوبی از اون استفاده کنن و ساعت های کمتری رو برای تحقیق و کشف کدهای برنامه نویسی افتر افکت صرف کنن.
لیست کدهای اکسپرشن افتر افکت:
Loop Expression.1
- LoopIn Expression
این کد به شما کمک میکنه که هر چیزی رو قبل از اولین کی فریم loop کنین.
![]()
کد:
loopIn()

- LoopOut Expression
این کد به شما کمک میکنه هر چیزی رو بعد از آخرین کی فریم loop کنین.
![]()
کد:
loopOut()

- Ping Pong Expression
این کد به شما کمک میکنه که 2 کی فریم رو که به اون عبارت بومرنگ هم میگن رو، به جلو و عقب ببرین.
برای این کار میتونین از کد loopIn (“pingpong”) یا loopOut (“pingpong”) استفاده کنین.
کد:
loopOut(“pingpong”)

- Loop Continue Expression
کد loopOut(“continue”) از آخرین کی فریم برای ادامه جهت و سرعتش تا آخر خط زمانی استفاده می کنه. اگه می خواین یه لایه توی طول زمان سفر کنه، این کد براتون میتونه کاربردی مفید باشه.
![]()
کد:
loopOut(“continue”)

- Loop Cycle
اکسپرشن loop cycle معمولا همون مقدار پیش فرضه، وقتی که شما loopOut (“cycle”) رو می نویسین، مثل نوشتن loopOut() هستش.
اگه از یه argument modifier استفاده کنین، این عبارت میتونه مفیدتر باشه.
کد:
loopOut(“cycle”)

- Loop Offset
اکسپرشن loop offset به شما این امکان رو میده که اولین یا آخرین کی فریم رو تکرار کنین یا مسیرتون رو آفست (offset) کنین.
کد:
loopOut(“offset”)

- Loop Duration
loop duration به شما این امکان رو میده که بعد از مدت زمان تعیین شده، مکث ایجاد بشه و دوباره loop تکرار بشه.
برای مثال کد loopOutDuration(“cycle”,3)، لوپ (loop) شما رو بعد از 3 ثانیه تکرار می کنه.
کد:
loopOutDuration(“cycle”,3)
// Loop cycle repeat every 3 seconds after last keyframe

- Loop a transition Effect
فرض کنید می خواین یه افکت transition رو که تا آخر خط زمانی شما پخش میشه، loop کنین .
کد:
effect(“Radial Wipe”)(1);(time <= key(1).time) ? loopIn(“pingpong”) : loopOut(“pingpong”)

- Loop Argument Modifier
Argument modifier به شما اجازه میده تا کنترل بیشتری روی نحوه loop انیمیشنتون داشته باشین، modifier عددیه که توی انتهای عبارت شما اضافه میشه، برای مثال: loopOut(“offset”, 2)

کد:
loopOut(“offset”, 2)

2.Floating
- Floating Layer Expression
اگه می خواین یه لایه شناور به صورت حرکت بالا و پایین که حالت یه شی توی فضا یا آب رو داشته باشه ایجاد کنین این اکسپرشن عالیه.
به طور کلی این اکسپرشن بی وزنی یه شی رو نشون میده. می تونین از این کد توی position و scale مورد نظرتون استفاده کنین.
کد:
amp = 250;
freq = 1;
y = amp*Math.sin(time*freq*Math.PI*2);
value + [0,y,0]

- Floating Bounce Layer
مشابه عبارت بالا، توی این یکی اکسپرشن می تونین حرکت و فرکانس لایه تون رو هم کنترل کنین.
کد:
ampY = 60;
ampZ = 150;
freqY = 0.5;
freqZ = 2;
y = ampY*Math.sin(time*freqY*Math.PI*2);
z = ampZ*Math.cos(time*freqZ*Math.PI*2);
value + [0,y,z]

3.Delay
- Delay Keyframe Expression
این عبارت به شما کمک میکنه تا انیمیشن تون رو به تاخیر بیندازین. این اکسپرشن در واقع کمکتون میکنه تا یه مکث قبل از شروع انیمیشن داشته باشین.
کد:
delayFrames = 40;
delay = framesToTime(delayFrames);
thisComp.layer(“logo”).transform.position.valueAtTime(time-delay)

- Delay and Index a Layer
عبارت Delay و index به شما این امکان رو میده که لایه های کوچیک دیگه ای رو توی زمان متفاوتی از لایه اصلی ایجاد کنین. تصاویر پایین رو بیینین تا بهتر متوجه این اکسپرشن بشین.
کد:
// Sets a delay amount in frames
var delay = 5;
// Multiplies delay based on this layer’s index relative to it’s parent
var multiplyDelay = delay * ( index – parent.index )
// Offsets layer’s Position in time based on delay
parent.fromComp( toComp( anchorPoint, time – framesToTime( multiplyDelay ) ) );

4. Wiggle Expression
- wiggle(5,10)
اولین شماره یا همون شماره 5 تعداد زمانی که لایه شما توی هر ثانیه تکان میخوره رو مشخص می کنه. که توی این حالت 5 بار توی 1 ثانیه حرکت می کنه.
دومین شمارهیا همون شماره 10 تعیین می کنه که چقدر توی این اکسپرشن، تصویر پیش فرض بالا و پایین بره.
کد:
wiggle(8,120)

- Start & Stop wiggle expression
با این اکسپرشن جذاب به راحتی می تونین حرکت شروع و توقف تون رو کنترل کنین.
کد:
wiggle(thisComp.layer(“Null 1”).effect(“Slider Control”)(“Slider”),10)

- Hold Wiggle Expression
اگه می خواین تکان خوردن تصویر یا همون wiggle تون رو متوقف کنین، این اکسپرشن میتونه براتون کاربردی باشه. این کد به شما اجازه میده تا حرکت و تکان خوردن رو توی فریم 100 متوقف کنین.
کد:
stopFrame = 100;
t = Math.min(time,framesToTime(stopFrame));
wiggle(13,20,1,.5,t)

- Wiggle Height Vertical
با این اکسپرشن Wiggle می تونین به صورت عمودی توی محور Y ، تصویرتون رو متحرک کنین.
کد:
org=value; temp=wiggle (8,40); [org[0],temp[1]];

- Wiggle Horizontal
توی این اکسپرشن Wiggle Horizontally تصویر توی محور x به حرکت در میاد.
کد:
org=value; temp=wiggle (5,120); [temp[0],org[1]];

- Wiggle with Depth on Z axis
توی این اکسپرشن تصویرتون رو به یه تصویر سه بعدی تبدیل کنین. در واقع از این کد برای حرکت توی محور Z استفاده میشه.
کد:
a =wiggle(0,0);
b =wiggle(0,0);
c = wiggle(5,95);[a[0],b[1],c[2]]

- Uniform Scale Wiggle
این اکسپرشن به شما این امکان رو میده که مقیاس لایه تون رو به با توجه به تناسب تغییر بدین.
کد:
w = wiggle(5, 80);
[w[0],w[0]]

- Wiggle Seamless Loop
این اکسپرشن wiggle به شما امکان میده تا به طور کامل توی همه جهات loop کنین. فقط فراموش نکنین که پایه loopTime رو توی composition جدول زمانی تون تنظیم کنین.
کد:
freq = 1;
amp = 110;
loopTime = 3;
t = time % loopTime;
wiggle1 = wiggle(freq, amp, 1, 0.5, t);
wiggle2 = wiggle(freq, amp, 1, 0.5, t – loopTime);
linear(t, 0, loopTime, wiggle1, wiggle2)

5. Bounce Expression
- Inertial Bounce Expression
این اکسپرشن bounce به شما این امکان رو میده که احساسی الاستیکی به پوزیشن لایه تون بدین.
کد:
amp = .1;
freq = 2.0;
decay = 2.0;
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time){
n–;
}}
if (n == 0){ t = 0;
}else{
t = time – key(n).time;
}
if (n > 0 && t < 1){
v = velocityAtTime(key(n).time – thisComp.frameDuration/10);
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{value}

- Scale Bounce Expression
این اکسپرشن فوق العاده جالب به لایه تون حالت ژله یا ژلاتین مانند میده.
کد:
timeToStart = .5;
if (time > timeToStart) {
maxDev = 30; // max deviation in pixels
spd = 30; //speed of oscillation
decay = 1.0; //how fast it slows down
t = time – inPoint;
x = scale[0] + maxDev*Math.sin(spd*t)/Math.exp(decay*t);
y = scale[0]*scale[1]/x;
[x,y]
}
else {
value;
}

- Ball Bounce Expression
این اکسپرشن زیبا که از پرش توپ با گزینه های گرانش و کشش تقلید می کنه میتونه براتون خیلی کاربردی و مفید باشه. برای جزئیات بیشتر درباره این اکسپرشن به این وب سایت مراجعه کنین.
کد:
e = .7; //elasticity
g = 5000; //gravity
nMax = 9; //number of bounces allowed
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time) n–;
}
if (n > 0){
t = time – key(n).time;
v = -velocityAtTime(key(n).time – .001)*e;
vl = length(v);
if (value instanceof Array){
vu = (vl > 0) ? normalize(v) : [0,0,0];
}else{
vu = (v < 0) ? -1 : 1;
}
tCur = 0;
segDur = 2*vl/g;
tNext = segDur;
nb = 1; // number of bounces
while (tNext < t && nb <= nMax){
vl *= e;
segDur *= e;
tCur = tNext;
tNext += segDur;
nb++
}
if(nb <= nMax){
delta = t – tCur;
value + vu*delta*(vl – g*delta/2);
}else{
value
}
}else
value

- Rotation Bounce Expression
2 کی فریم کلیدی بسازین و این اکسپرشن rotation bounce رو بهش بدین. برای جزئیات بیشتر درباره این اکسپرشن به این وب سایت مراجعه کنین.
کد:
e = .5; //elasticity
g = 1000; //gravity
nMax = 5; //number of bounces allowed
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time) n–;
}
if (n > 0){
t = time – key(n).time;
v = -velocityAtTime(key(n).time – .001)*e;
vl = length(v);
if (value instanceof Array){
vu = (vl > 0) ? normalize(v) : [0,0,0];
}else{
vu = (v < 0) ? -1 : 1;
}
tCur = 0;
segDur = 2*vl/g;
tNext = segDur;
nb = 1; // number of bounces
while (tNext < t && nb <= nMax){
vl *= e;
segDur *= e;
tCur = tNext;
tNext += segDur;
nb++
}
if(nb <= nMax){
delta = t – tCur;
value + vu*delta*(vl – g*delta/2);
}else{
value
}
}else
value

- Text Bounce Expression
با اکسپرشن text bounce می تونین به راحتی bounce frequency، bounce character delay، bounce decay و bounce start رو با استفاده از slider control توی پنجره effect control تغییر بدین. تصویر زیر رو ببینین.

کد:
f = effect(“Bounce Frequency”)(1);
// 0 means start at bottom, 1 means start at stop
phase_start = effect(“Bounce Start”)(1) / 100;
character_delay_param = effect(“Bounce Per-Character Delay”)(1).value;
character_delay_index = textIndex – 1;
if (character_delay_param < 0) {
character_delay_param = -character_delay_param ;
character_delay_index = (textTotal – textIndex);
}
character_delay = character_delay_param * character_delay_index;
t = time * f – character_delay;
if (t < 0) {
t = 0;
}
t += phase_start;
w = 2;
bounce_num = Math.floor(t / w);
t = t % w;
y = t * (w – t);
decay = effect(“Bounce Decay”)(1) / 100;
h = Math.pow(decay, bounce_num);
-h + h*y * selectorValue

Blink Expression.6
توی قسمت opacity لایه تون، این اکسپرشن رو اعمال کنین تا لایه تون شروع به چشمک زدن بکنه، همچنین میتونین سینتکس (مجموعه قوانین نوشتاری توی یه زبان برنامه نویسی) رو برای چشمک زدن سریع سفارشی کنین.
کد:
blinkSpeed=15;
n= Math.sin(time*blinkSpeed);
if(n<0) 0 else 100;

7. After Effects Text Bounding box
این اکسپرشن برای ایجاد یه جعبه متن توی افتر افکت هستش که میتونه توی زمان شما صرفه جویی کنه.
عبارت اول باید به اندازه (size) مستطیل شما و دومی باید به انکر پوینت (anchor point) مستطیل شما اضافه بشه.
کد:
/* add this expression on the size of your rectangle shape */
box=thisComp.layer(“dfd”).sourceRectAtTime();
Width=box.width;
Height=box.height;
p=effect(“Slider Control”)(“Slider”);
x=Width+p;
y=Height+p;
[x,y]
/* add this expression on the Anchor Point of your rectangle shape */
box=thisComp.layer(“dfd”).sourceRectAtTime();
Width=box.width;
Height=box.height;
Top=box.top;
Left=box.left;
p=effect(“Slider Control”)(“Slider”);
x=Width/-2-Left;
y=Height/-2-Top;
[x,y]

8.Opacity
- Fade Layer base on Camera Distance
یه اسکریپت جالب وجود داره که من توی وب سایت motion-graphics-exchange پیدا کردم، که به شما کمک میکنه توی یه لایه توی فاصله دوربین تصویرتون رو محو کنین.
فقط کافیه این اسکریپت رو روی opacity لایه تون اعمال کنین، وقتی لایه به دوربین نزدیکتر میشه محو میشه. این کد زمانی مفیده که لایه ها شما نیاز به محو شدن داره.
کد:
startFade = 500; // Start fade 500 pixels from camera.
endFade = 1500; // End fade 1500 pixels from camera.
try{ // Check whether there’s a camera.
C = thisComp.activeCamera.toWorld([0,0,0]);
}catch(err){ // No camera, so assume 50mm.
w = thisComp.width * thisComp.pixelAspect;
z = (w/2)/Math.tan(degreesToRadians(19.799));
C = [0,0,-z];
}
P = toWorld(anchorPoint);
d = length(C,P);
linear(d,startFade,endFade,100,0)

سخن پایانی:
لیست کدهای اکسپرشن افتر افکت بالا رو دوست داشتین؟ اگه سوالی داشتین همین پایین از ما بپرسین. راستی اگه دنبال یادگیری افتر افکت هستی ما میتونیم بهت کمک کنیم چون کلی آموزش های خفن توی این زمینه داریم.
اگه هم میخوای توی حرفه موشن گرافیک متخصص بشی ولی نمیدونی از کجا شروع کنی، موشن گورو بهت کمک میکنه تا موشن گرافیک رو سریع و تخصصی یاد بگیری.
فقط کافیه به قسمت محصولات آموزشی سایت بری، اونجا کلی آموزش عالی داریم تازه آموزش های رایگان زیادی هم داریم که بهترین راه برای شروع این مسیره. پس منتظر چی هستی همین الان استارت کارت رو بزن.
اگه هم برای کسب و کارت نیاز به یه ویدیو موشن گرافیک قوی داری، همین امروز سفارش موشن گرافیکت رو ثبت کن.





چقدر عالی و جامع 👌
سلام
بسیار عالی و شسته رفته و مرتب مثل مطلب کلید های میان بر
پیروز و موفق باشین
چقدر خوب و جامع
دونستن کد اکسپرشن واقعا کمک کننده هست، و فرار هم هست. که یه مقاله این مدلی می تونه باعث بشه دم دستت باشه.