Yardım: Morphing & Sequenced Animations
Form dönüşümleri ve koreografyalı multi-element animasyonları oluşturun.
Time: 20 dakika Difficulty: Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced Advanced
What You’ll Create
Bir dinamik dizi, metin sabit zamanlama ile ortaya çıktığında birbirlerinin içine morflar.
Özellikler Covered
- Shape morfing - farklı şekillerdeki parlak geçişler
- Staggered animasyonlar - Birden fazla element için Sequenced zamanlama
- Renk geçişleri – Animation gradient renkli değişiklikler
- Mask, – Cinematic silin ve iris etkiler
- Choreographed diziler – Precisely timed multi-element dans dans dansı
Bölüm 1: Şekil Morphing
Adım 1: Kaynak Şekili Oluşturma
- Merkezde bir daire oluşturun:
- Radius: 80
- Renk:
#3b82f6(mavi) - Position: (400, 300)
const circle = app.create('circle', {
x: 400, y: 300,
radius: 80,
color: '#3b82f6'
});
Adım 2: Hedef Şekil Oluştur
- Bir yıldız oluşturun ( morf hedefi olacak):
- Puanlar: 5
- Radius: 100
- Renk:
#f59e0b(amber) - Position: (400, 300)
const star = app.create('star', {
x: 400, y: 300,
points: 5,
radius1: 100,
radius2: 40,
color: '#f59e0b'
});
Adım 3: Morph Relation Ekle
morphs_to ilişkisi düzgün şekil geçişleri yaratır:
app.addRelation(circle.data.id, star.data.id, 'morphs_to', {
duration: 1.5,
easing: 'easeInOut',
morphColor: true, // Also transition colors
morphSize: true // Also transition size
});
Adım 4: Zincir Multi Morphs
Bir morfing dizisi oluşturun: Circle → Yıldız → Üçgen → Circle
const shapes = [];
// Circle
shapes.push(app.create('circle', {
x: 400, y: 300, radius: 80, color: '#3b82f6'
}));
// Star
shapes.push(app.create('star', {
x: 400, y: 300, points: 5, radius1: 100, radius2: 40,
color: '#f59e0b', opacity: 0
}));
// Triangle
shapes.push(app.create('triangle', {
x: 400, y: 300, radius: 90,
color: '#10b981', opacity: 0
}));
// Hexagon (back to geometric)
shapes.push(app.create('polygon', {
x: 400, y: 300, sides: 6, radius: 85,
color: '#8b5cf6', opacity: 0
}));
// Chain morphs with delays
for (let i = 0; i < shapes.length - 1; i++) {
app.addRelation(shapes[i].data.id, shapes[i + 1].data.id, 'morphs_to', {
duration: 1.2,
delay: i * 1.5, // Stagger start times
easing: 'easeInOut',
morphColor: true
});
}
// Loop back to first shape
app.addRelation(shapes[shapes.length - 1].data.id, shapes[0].data.id, 'morphs_to', {
duration: 1.2,
delay: (shapes.length - 1) * 1.5,
easing: 'easeInOut',
morphColor: true
});
Bölüm 2: Staggered Text Explain
Adım 5: Create Letter Collage
const collage = app.letterCollage.create('TRANSFORM', {
style: 'gradient',
gradientPalette: 'cyberpunk',
gradientDirection: 'horizontal',
fontSize: 64,
x: 400, y: 500
});
Adım 6: Staggered Animation
app.letterCollage.applyStaggeredAnimation(collage.collageId, {
effect: 'fadeSlideUp',
staggerDelay: 0.06, // 60ms between letters
duration: 0.5,
sequence: 'center', // Start from center, expand outward
easing: 'easeOut'
});
Sequence Patterns
| Desen | Etkisi |
|---|---|
linear |
Sağdan sağa |
reverse |
Sağdan sağa sola |
center |
Merkezi dış dışı |
random |
Random order |
wave |
Sine dalga zamanlama |
fibonacci |
Doğal ritmi |
Bölüm 3: Maske Açıklıyor
Adım 7: Dramatik Açıklama Ekle
Bir iris etkisi ile morfikasyon şeklini ortaya çıkarın:
// Apply animated mask to the shape container
app.applyAnimatedMask(shapes[0], 'iris', {
startTime: 0,
duration: 0.8,
easing: 'easeOut'
});
Adım 8: Wipe Text
// Reveal text with horizontal wipe
app.applyAnimatedMask(collage.group, 'wipeLeft', {
startTime: 0.5, // Start after shape reveals
duration: 0.6,
easing: 'easeInOut'
});
Mevcut Maske Presets
| Preset | Etkisi |
|---|---|
iris |
Çember merkezden genişleyen |
wipeLeft |
Yatay soldan ortaya çıkıyor |
wipeUp |
Dikey alttan ortaya çıkıyor |
star |
Yıldız şekli genişleyen |
heart |
Kalp şekli genişleyen |
curtainHorizontal |
Merkezden Açıklar |
diagonalWipe |
Lanet ortaya çıktı |
Bölüm 4: Tamam Choreography
Full Animation Full
// === SETUP ===
app.setCanvasSize({ width: 800, height: 600 });
app.setBackgroundColor('#0f172a');
// === MORPHING SHAPES ===
const shapeColors = ['#3b82f6', '#f59e0b', '#10b981', '#8b5cf6'];
const shapeTypes = ['circle', 'star', 'triangle', 'polygon'];
const mainShape = app.create('circle', {
x: 400, y: 250,
radius: 80,
color: shapeColors[0]
});
// Keyframe the shape through color transitions
app.addAnimation(mainShape.data.id, [
{ time: 0, properties: { fillColor: '#3b82f6', scale: 1 } },
{ time: 1.5, properties: { fillColor: '#f59e0b', scale: 1.2 }, easing: 'easeInOut' },
{ time: 3, properties: { fillColor: '#10b981', scale: 0.9 }, easing: 'easeInOut' },
{ time: 4.5, properties: { fillColor: '#8b5cf6', scale: 1.1 }, easing: 'easeInOut' },
{ time: 6, properties: { fillColor: '#3b82f6', scale: 1 }, easing: 'easeInOut' }
]);
// Add rotation for visual interest
app.addAnimation(mainShape.data.id, [
{ time: 0, properties: { rotation: 0 } },
{ time: 6, properties: { rotation: 360 }, easing: 'linear' }
]);
// === IRIS REVEAL FOR SHAPE ===
app.applyAnimatedMask(mainShape, 'iris', {
startTime: 0,
duration: 0.6,
easing: 'easeOut'
});
// === STAGGERED TEXT ===
const title = app.letterCollage.create('TRANSFORM', {
style: 'tile',
palette: 'neon',
fontSize: 56,
x: 400, y: 480
});
app.letterCollage.applyStaggeredAnimation(title.collageId, {
effect: 'popIn',
staggerDelay: 0.05,
duration: 0.4,
sequence: 'center',
easing: 'elastic'
});
// === ORBITING ACCENTS ===
const orbitColors = ['#f472b6', '#34d399', '#fbbf24'];
orbitColors.forEach((color, i) => {
const dot = app.create('circle', {
x: 400, y: 250,
radius: 6,
color: color
});
app.addRelation(dot.data.id, mainShape.data.id, 'orbits', {
radius: 120 + i * 25,
speed: 0.4 - i * 0.1,
phase: i * (Math.PI * 2 / 3)
});
// Fade in the orbiting dots
app.addAnimation(dot.data.id, [
{ time: 0.8 + i * 0.2, properties: { opacity: 0, scale: 0 } },
{ time: 1.2 + i * 0.2, properties: { opacity: 1, scale: 1 }, easing: 'elastic' }
]);
});
// === CAMERA MOVEMENT ===
app.addRelation('camera', null, 'camera_animates', {
duration: 6,
loop: true,
keyframes: [
{ time: 0, zoom: 1, center: [400, 300] },
{ time: 1.5, zoom: 1.15, center: [400, 280], easing: 'easeOut' },
{ time: 3, zoom: 1.05, center: [400, 320], easing: 'easeInOut' },
{ time: 4.5, zoom: 1.1, center: [400, 300], easing: 'easeInOut' },
{ time: 6, zoom: 1, center: [400, 300], easing: 'easeOut' }
]
});
// === PLAY ===
app.playKeyframeTimeline(6, true);
İhracat Ayarları
En iyi sonuçlar için morfing animasyonları:
| Ayar ayarı | Değer | Sebep |
|---|---|---|
| Format | WebM | Gradients için en iyi kalite |
| Frame Rate | 60 fps | Parlak morphs |
| Süre süresi | 6 saniye | Full döngü döngüsü |
| Kalite kalitesi | Yüksek | Renk geçişleri koruma |
Pro Tips
Genel zamanlama - Önceki akış için önceki sonlardan önce sonraki animasyon 0.1-0.2’leri başlatın.
tamamlayıcı renkler kullanın - Şekil morfları birlikte iyi çalışan renkler arasında geçiş yaparken en iyi görünür.
Deneksiyon için merkezi sıra -
centerstagger modeli metin ortasına dikkat çekiyor.
**Match içeriğe ortaya çıkıyor -
iris’yu dairesel şekiller için kullanın,wipeLeftfor text.
Variations
Data Visualization Morph
// Bar chart to pie chart transition
const bars = createBarChart(data);
const pie = createPieChart(data);
app.addRelation(bars.data.id, pie.data.id, 'morphs_to', {
duration: 2,
easing: 'easeInOut'
});
Logo Animation Sequence
// Logo parts appear in sequence
const logoParts = [shape1, shape2, shape3, text];
logoParts.forEach((part, i) => {
app.addAnimation(part.data.id, [
{ time: i * 0.3, properties: { opacity: 0, scale: 0.5 } },
{ time: i * 0.3 + 0.4, properties: { opacity: 1, scale: 1 }, easing: 'elastic' }
]);
});
Sonraki Adımlar
- Physics Animation – B ve elastik etkiler
- Map Animations – Coğrafi veri hikaye
- Masking System – Gelişmiş açık teknikler