متحرک نظام جو متحرک، عملدرآمدی، اور اظہار پر مبنی انیمیشن بنانے کے لئے ہے جو سادہ کی فریمز سے آگے بڑھتا ہے۔
انیمیشن نظام روایتی کی فریمز کے علاوہ کئی اقسام کی حمایت کرتا ہے:
یہ جدید انیمیشنز عناصر کی animations صف میں متعین کی گئی ہیں۔
نوڈ انیمیشنز (animations صف):
کی فریمز (keyframes صف):
جب متعدد انیمیشن کے طریقے ایک ہی پراپرٹی کو نشانہ بناتے ہیں:
| پراپ | قسم | ضروری | مثال | قدر کی حد | تفصیل |
|---|---|---|---|---|---|
| type | string | true | - | expression | procedural | sequence | path | انیمیشن کی قسم۔ |
| enabled | boolean | false | - | - | کیا انیمیشن فعال ہے۔ |
| target | string | true | - | - | متحرک کرنے کے لئے پراپرٹی کا راستہ (جیسے، "x"، "rotation"، "scaleX")۔ |
| startTime | number | false | - | - | انیمیشن کا آغاز وقت عنصر کے آغاز کے لحاظ سے، سیکنڈ میں۔ |
| duration | number | false | - | - | انیمیشن کی دورانیہ سیکنڈ میں۔ لوپنگ انیمیشن کے لئے، یہ لوپ کی مدت ہے۔ |
| loop | boolean | false | - | - | کیا انیمیشن لوپ کرتی ہے۔ |
| blendMode | string | false | - | replace | add | multiply | یہ انیمیشن دوسروں کے ساتھ کیسے ملتی ہے: تبدیل کریں (اوور رائڈ)، شامل کریں (جمع)، ضرب دیں (اسکیل)۔ |
| blendWeight | number | false | - | - | اس انیمیشن کی طاقت/اثر (0-1)۔ متعدد انیمیشنز کے ملاپ کے لئے استعمال ہوتا ہے۔ |
اظہار جاوا اسکرپٹ کوڈ ہیں جو ہر فریم پر جانچے جاتے ہیں، انیمیشن سیاق و سباق کی متغیرات تک رسائی کے ساتھ۔
{
time: number; // موجودہ مطلق وقت (سیکنڈ)
localTime: number; // عنصر کے آغاز کے لحاظ سے وقت
duration: number; // عنصر کی دورانیہ
progress: number; // معمول کے مطابق پیشرفت (0-1)
index: number; // گروپ میں عنصر کی انڈیکس
total: number; // گروپ میں کل عناصر
fps: number; // فی سیکنڈ فریم
width: number; // کینوس کی چوڑائی
height: number; // کینوس کی اونچائی
value: any; // موجودہ پراپرٹی کی قیمت
}ریباونس انیمیشن جو ریاضی کی فنکشنز کا استعمال کرتی ہے:
{
"id": "element-1",
"type": "Image",
"start": 0,
"duration": 5,
"animations": [
{
"type": "expression",
"target": "y",
"enabled": true,
"expression": "100 + Math.abs(Math.sin(localTime * 3)) * 200",
"startTime": 0,
"duration": 5,
"loop": true
}
]
}
متعدد اثرات کو ملا کر:
{
"animations": [
{
"type": "expression",
"target": "rotation",
"expression": "(localTime * 2 * Math.PI / duration) + Math.sin(localTime * 4) * 0.1",
"loop": true
},
{
"type": "expression",
"target": "scaleX",
"expression": "1 + Math.sin(localTime * 5) * 0.2",
"loop": true
}
]
}
بلٹ ان انیمیشن پیٹرن جن کے متغیرات کو ترتیب دیا جا سکتا ہے۔
{
"animations": [
{
"type": "procedural",
"proceduralType": "wiggle",
"target": "rotation",
"enabled": true,
"frequency": 2,
"amplitude": 0.1,
"loop": true
}
]
}
مرحلہ وار انیمیشن جو مخصوص وقفوں پر قیمتوں کو تبدیل کرتی ہیں۔
| پراپ | قسم | ضروری | مثال | قدر کی حد | تفصیل |
|---|---|---|---|---|---|
| values | array | true | - | - | قدروں کی صف جن پر گزرنا ہے۔ |
| stepDuration | number | true | - | - | ہر قدم کی دورانیہ سیکنڈ میں۔ |
| loop | boolean | false | - | - | کیا ترتیب لوپ ہوتی ہے۔ |
متن مختلف سائزوں میں گردش کرتا ہے:
{
"animations": [
{
"type": "sequence",
"target": "fontSize",
"enabled": true,
"values": [24, 32, 40, 32, 24],
"stepDuration": 0.5,
"loop": true
}
]
}
عناصر کو بیزیئر منحنی خطوط کے ساتھ متحرک کریں۔
| پراپ | قسم | ضروری | مثال | قدر کی حد | تفصیل |
|---|---|---|---|---|---|
| path | string | array | true | - | - | SVG راستہ کے ڈیٹا (d صفات) یا راستے کے نکات کی صف۔ |
| autoRotate | boolean | false | - | - | کیا عنصر کو راستے کے ٹینجنٹ کی پیروی کرنے کے لئے خود بخود گھمانا ہے۔ |
| duration | number | true | - | - | پورے راستے کو مکمل کرنے کا وقت۔ |
مدور حرکت:
{
"animations": [
{
"type": "path",
"target": "position",
"enabled": true,
"path": "M 100,100 a 200,200 0 1,1 0,1 Z",
"autoRotate": true,
"duration": 4,
"loop": true
}
]
}
target پراپرٹی نقطہ نوٹیشن کا استعمال کرتی ہے تاکہ نیسٹڈ پراپرٹیز کو متعین کیا جا سکے:
"x", "y", "rotation""scale.x", "position.y""colors[0]", "points[2].x"{
"target": "x" // عنصر کی x پوزیشن
"target": "scaleX" // افقی اسکیل
"target": "alpha" // شفافیت
"target": "fill.color" // بھرنے کا رنگ (اگر بھرنا آبجیکٹ ہو)
"target": "points[0].x" // پہلے نقطے کی x کوآرڈینیٹ
}یہ کنٹرول کرتا ہے کہ جب متعدد انیمیشنز ایک ہی پراپرٹی کو نشانہ بناتی ہیں تو وہ کیسے ملتے ہیں:
{
"blendMode": "replace",
"blendWeight": 1.0
}پراپرٹی کی قیمت کو مکمل طور پر تبدیل کرتا ہے۔
{
"blendMode": "add",
"blendWeight": 0.5
}موجودہ قیمت میں شامل کرتا ہے (وزن دار)۔ انحرافات کو جمع کرنے کے لئے مفید۔
{
"blendMode": "multiply",
"blendWeight": 1.0
}موجودہ قیمت کو ضرب دیتا ہے۔ پیمائش کے اثرات کے لئے مفید۔
مختلف انیمیشن کی اقسام کو ملانا:
{
"id": "animated-element",
"type": "Shape",
"animations": [
{
"type": "expression",
"target": "x",
"expression": "width / 2 + Math.sin(localTime * 2) * 300",
"blendMode": "replace",
"loop": true
},
{
"type": "procedural",
"proceduralType": "wiggle",
"target": "rotation",
"frequency": 3,
"amplitude": 0.2,
"blendMode": "add",
"blendWeight": 0.5
},
{
"type": "sequence",
"target": "alpha",
"values": [1, 0.8, 1],
"stepDuration": 0.3,
"loop": true,
"blendMode": "multiply"
}
],
"keyframes": [
{
"id": "kf-1",
"time": 0,
"stateObj": { "scaleX": 1 }
},
{
"id": "kf-2",
"time": 2,
"stateObj": { "scaleX": 1.5 }
}
]
}
اس مثال میں:
startTime اور duration عنصر کے start وقت کے لحاظ سے ہیںlocalTime عنصر کے آغاز پر 0 سے شروع ہوتا ہےduration کی حد کی تعظیم کرتی ہیںenabled: truetarget پراپرٹی موجود ہےstartTime عنصر کی دورانیہ کے اندر ہے{
"type": "expression",
"target": "x",
"expression": "value + (targetX - value) * 0.1"
}{
"type": "expression",
"target": "scaleY",
"expression": "1 + Math.exp(-localTime * 3) * Math.cos(localTime * 8) * 0.5"
}{
"type": "procedural",
"proceduralType": "wiggle",
"target": "x",
"frequency": 10,
"amplitude": 5
}{
"type": "expression",
"target": "alpha",
"expression": "Math.max(0, Math.min(1, (localTime - index * 0.1) * 2))"
}