Các keyframe định nghĩa các giá trị thuộc tính cụ thể tại các thời điểm cụ thể, với sự nội suy giữa chúng để tạo ra các hoạt ảnh mượt mà.
| Thuộc tính | Loại | Bắt buộc | Ví dụ | Phạm vi giá trị | Mô tả |
|---|---|---|---|---|---|
| id | string | true | - | - | Định danh duy nhất của keyframe. |
| time | number | true | - | - | Thời gian mà keyframe xảy ra, tính bằng giây (tương đối với thời gian bắt đầu của phần tử). |
| stateObj | object | true | - | - | Đối tượng trạng thái chứa các giá trị thuộc tính tại keyframe này. Có thể bao gồm bất kỳ thuộc tính nào có thể hoạt hình như x, y, rotation, scaleX, scaleY, alpha, v.v. |
| cp1 | object | false | - | - | Điểm kiểm soát đầu tiên cho việc easing đường cong Bezier. Các tọa độ được chuẩn hóa (phạm vi 0-1). Ví dụ: {x: 0.25, y: 0.1} |
| cp2 | object | false | - | - | Điểm kiểm soát thứ hai cho việc easing đường cong Bezier. Các tọa độ được chuẩn hóa (phạm vi 0-1). Ví dụ: {x: 0.25, y: 1} |
Các thuộc tính cp1 và cp2 định nghĩa một đường cong Bezier bậc ba cho việc easing tùy chỉnh giữa các keyframe:
cp1: {x: 0.42, y: 0}, cp2: {x: 0.58, y: 1}cp1: {x: 0.42, y: 0}, cp2: {x: 1, y: 1}cp1: {x: 0, y: 0}, cp2: {x: 0.58, y: 1}{
"id": "39ecb75a-3490-43bd-84c2-72366c2f39f2",
"type": "Image",
"start": 0,
"duration": 5,
"trackIndex": 0,
"x": 0,
"y": 0,
"blendMode": "normal",
"anchorX": 1302,
"anchorY": 2312,
"rotation": 0,
"scaleX": 0.23356401384083045,
"scaleY": 0.23356401384083045,
"alpha": 1,
"skewX": 0,
"skewY": 0,
"keyframes": [
{
"id": "800350bd-4a24-4440-904c-ec08a8159508",
"time": 0,
"stateObj": {
"alpha": 0
},
"cp1": {
"x": 0.25,
"y": 0.1
},
"cp2": {
"x": 0.25,
"y": 1
}
},
{
"id": "ce3f9b10-2b9e-4266-8cdb-77167f9f16aa",
"time": 3,
"stateObj": {
"alpha": 1
},
"cp1": {
"x": 0.25,
"y": 0
},
"cp2": {
"x": 0.25,
"y": 0.9
}
}
],
"externalUrl": "https://images.pexels.com/photos/30465303/pexels-photo-30465303.jpeg",
"ext": "jpeg"
}
Khi một phần tử có nhiều phương pháp hoạt hình được áp dụng:
keyframes) - hoạt hình thuộc tính chuẩnanimations) - hoạt hình nâng cao như biểu thức, đường dẫn, chuỗiNếu cùng một thuộc tính được hoạt hình bởi nhiều phương pháp, thứ tự ưu tiên là:
Điều này cho phép các hoạt hình nâng cao ghi đè các giá trị keyframe khi cần thiết.
time của keyframe là tương đối với thời gian start của phần tử, không phải thời gian tuyệt đối trên dòng thời gian.stateObj.cp1 và cp2.fill, stroke) được nội suy trong không gian RGB.