วัตถุ | คำอธิบาย | ตัวอย่าง |
---|---|---|
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 Hz
สารละลาย:
[ 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 ]