هدف | وصف | مثال |
---|---|---|
thisComp | التكوين الحالي | thisComp; |
thisLayer | الطبقة الحالية | thisLayer.transform.scale[1]; |
thisProperty | الخاصية الحالية يتم تطبيق التعبير على. | thisProperty[1]; |
time | Timecode الحالي في موضع المؤشر في ثوان. | "Seconds: " + time; |
value | القيمة الحالية المرتبطة بالخاصية الحالية. | value + "_TEST"; |
هدف | وصف | مثال |
---|---|---|
colorDepth | عمق لون المشروع في أجزاء لكل بكسل. | colorDepth; |
وظيفة | وصف |
---|---|
layer(index || number) | إرجاع طبقة أو ضوء أو كاميرا. |
layer(layer, relIndex) | إرجاع الكائن مع فهرس نسبي إلى الطبقة المحددة. |
وظيفة | وصف | مثال |
---|---|---|
framesToTime(frames, fps) | تحويل الإطارات إلى timecode في ثوان. | framesToTime(50, 1.0 / thisComp.frameDuration); |
timeToCurrentFormat(t, fps, isDuration) | يحول رمز timecode إلى تنسيق عرض إعدادات المشروع الحالي. | |
timeToFeetAndFrames(t, fps, framesPerFoot, isDuration) | يحول تنسيق Timecode إلى القدمين والإطارات. | |
timeToFrames(t, fps, isDuration) | يحول رمز timecode إلى الإطارات. | |
timeToNTSCTimecode(t, ntscDropFrame, isDuration) | يحول رمز timecode إلى NTSC timecode مع أو بدون إطار إسقاط. | |
timeToTimecode(t, timecodeBase, isDuration) | يحول رمز timecode إلى رمز timecode الآخر باستخدام قاعدة الوقت المحددة. |
وظيفة | وصف | مثال |
---|---|---|
comp(name) | ابحث عن التكوين المفتوح مع الاسم المحدد. | comp("Comp 1"); |
footage(name) | ابحث عن لقطات المشروع مع الاسم المحدد. | footage("RedHarring.png"); |
لديك:
اتريد:
حل:
دعنا نقول أن لديك طبقة شكل ذات شكل مستطيل.
اضبط والد طبقة المستطيل على طبقة النص ، وهذا سيجعل تحديد المواقع بالنسبة إلى وضع طبقة النص.
أضف التعبير التالي إلى خاصية حجم مسار المستطيل
var textLayer = thisComp . layer ( "Text Layer 1" ) ;
var textRect = textLayer . sourceRectAtTime ( time - textLayer . inPoint , true ) ;
// set size of rectangle path to text rectangle's width and height
[ textRect . width , textRect . height ] ;
سيؤدي هذا إلى ضبط حجم المستطيل على حجم النص. عندما يكون هناك عدة خطوط ، فإنه يتطلب الحجم الكامل لجميع الخطوط.
var rectPath = content ( "Rectangle 1" ) . content ( "Rectangle Path 1" ) ;
var x = rectPath . size [ 0 ] ;
var y = rectPath . size [ 1 ] ;
// set position of rectangle path to text rectangle's width and height
[ x / 2 , - ( y / 2 ) ] ;
هذا يضع الموضع الأيسر السفلي لمسار المستطيل إلى أعلى يسار الطبقة. تحتوي طبقات النص دائمًا على نقاط مرساة في الجزء السفلي من السطر الأول من النص. هذا سيجعل الحساب أكثر سهولة القيام به.
var textLayer = thisComp . layer ( "Text Layer 1" ) ;
var textRect = textLayer . sourceRectAtTime ( time - textLayer . inPoint , true ) ;
[ textLayer . transform . position [ 0 ] + textRect . left ,
textLayer . transform . position [ 1 ] + textRect . top + textRect . height ] ;
هذا يضع موضع طبقة المستطيل على موضع النص. سبب إضافة حجم المستطيل ، هو أن تقديم الخط يمكن أن يتسبب في أن يكون الحرف الأول بضع وحدات البكسل خارج الوضع. إضافة إحداثيات المستطيل سوف تعوض عن ذلك.
المشاكل:
لديك:
اتريد:
أضف الارتعاش الأفقي إلى الفيديو بحيث يبدو أنه يتداخل 50 هرتز.
حل:
[ transform . position [ 0 ] , transform . position [ 1 ] + ( ( timeToFrames ( time ) % 2 ) * 2 ) ]
المشاكل:
الارتعاش ثقيل للغاية يمكنك حل هذا عن طريق إزالة الضرب في التعبير
[ transform . position [ 0 ] , transform . position [ 1 ] + ( timeToFrames ( time ) % 2 ) ]
أو حتى متعددة بمقدار النصف للحصول على هز خفية للغاية.
[ transform . position [ 0 ] , transform . position [ 1 ] + ( ( timeToFrames ( time ) % 2 ) * 0.5 ) ]
يجب أن يكون النص محورًا رأسياً. أضف التعبير التالي إلى خاصية تحويل طبقة النص
S = thisLayer ;
x = transform . position [ 0 ] ;
y = transform . position [ 1 ] ;
rect = S . sourceRectAtTime ( time , false ) ;
y_offset = rect . height / 2 ;
[ x , y - y_offset ]