این مثال مانند نسخهای از یک ReactTransitionGroup است که برای چگونه با اسکرچ انیمیشن بسازیم فراخوانی انیمیشنهای ضروری برای مدیریت انتقالها بهینه شده است. در اینجا، والدین پایه isVisible را تغییر میدهند تا فرزند را نشان داده و پنهان کند، و متغیر حالت animatingOut اطمینان حاصل میکند که حتی اگر سایر بهروزرسانیها قبل از تکمیل انیمیشن، بایدComponentUpdate را راهاندازی کنند، عناصر خروجی به اندازه کافی در DOM نگه داشته میشوند تا به خوبی منتقل شوند. .
من در اینجا یک تماس setInterval دارم که آیتمهای عنصر را مستقل از چگونه با اسکرچ انیمیشن بسازیم انیمیشنهای ورودی و خروجی بهروزرسانی میکند، بنابراین میتوانید ببینید که این تنظیمات میتواند بهروزرسانیهای نامرتبط را بدون مانع از پیشرفت انیمیشن اصلی مدیریت کند.
مولفه HOC wrapper به شکل زیر است:
دو: متحرک سازی موقعیت های کامپوننت
پیوند به مثال زنده
پیوند به کد
این مثال پیچیده تر است و توجیه بهتری برای رویکرد انیمیشن دستی ارائه چگونه با اسکرچ انیمیشن بسازیم می دهد. در این انیمیشن هیچ عنصری به DOM وارد یا خارج نمی شود. در عوض، میخواهیم لحظهای را که گروهبندیها تغییر کردهاند، ببینیم و موقعیتهای بچهها را در حین حرکت به مکانهای جدیدشان متحرک کنیم. برای این نوع انیمیشن می توانیم از تکنیک FLIP استفاده کنیم:
موقعیت کودکان را درست قبل از سازماندهی مجدد ثبت کنید
منتظر بمانید تا مرورگر طرح بندی را اجرا کند
قبل از رنگ آمیزی تغییرات، تبدیل هایی را برای کودکان در componentDidUpdate اعمال کنید که باعث می شود آنها به موقعیت های قبلی خود برگردند.
انتقال را آغاز کنید تا به تدریج آنها را به مکان های به روز خود برگردانید
در زیر نمونهای از تابع انیمیشن است که دو بار توسط HOC فراخوانی چگونه با اسکرچ انیمیشن بسازیم میشود: ابتدا در componentWillReceiveProps، جایی که موقعیتهای اولیه اجزا را پنهان میکند و تابع دیگری را برای فراخوانی در componentDidUpdate برمیگرداند، که در واقع انتقالها را با anime.js انجام میدهد. مانند تمام مثالها، مؤلفه به فهرست، مرجع والد، توسط HOC ارسال میشود.
سه: ورود، به روز رسانی و خروج از انیمیشن به سبک D3
پیوند به مثال زنده
پیوند به کد
این مثال تکنیکهای دو مورد اول را ترکیب میکند – این بار، نه تنها در عناصر جدید متحرک میشویم و بهروزرسانیها را تا زمانی که بتوانیم عناصر خروجی را متحرک کنیم به تأخیر میاندازیم، بلکه منتظر اجرای طرحبندی componentDidUpdate هستیم تا بتوانیم بهآرامی آیتمهای بهروزرسانی را متحرک کنیم. به موقعیت چگونه با اسکرچ انیمیشن بسازیم های جدید خود در لیست قبل از ظاهر شدن موارد جدید. تابع shouldComponentUpdate مسئول مرتبسازی شناسهها به سه دسته enter، بهروزرسانی و خروج، و ارسال آن فهرست شناسهها به توابع انیمیشن مربوطه است، که از ویژگی data-id ذکر شده در بالا برای فیلتر کردن آیتمها به لیستی استفاده میکنند. نیاز به متحرک سازی
اگر مثال را در کتاب داستان بررسی کنید، شمارهای را خواهید دید که بهطور مداوم در حال بهروزرسانی در زیر انیمیشن ارائه میشود. این یک پایه است که از طریق انیمیشن HOC به مؤلفه List منتقل می شود. هدف آن نشان دادن این است که وقتی رویدادهای چرخه حیات به درستی مدیریت می شوند، انیمیشن های خروجی چگونه با اسکرچ انیمیشن بسازیم می توانند به صورت عادی پیش بروند، حتی زمانی که سایر منابع داده در حال به روز رسانی هستند. روشی که HOC این کار را تسهیل می کند با ذخیره کردن لیست قدیمی عناصر برای مدت زمان انیمیشن خروج است.
کد موجود در فایل انیمیشن پیچیدهترین کد از بین این سه مثال است، تا حدی به این دلیل که من سعی میکنم برخی از موارد لبه را در نظر بگیرم - مانند انیمیشنهای در حال پیشرفت با فوروارد سریع چگونه با اسکرچ انیمیشن بسازیم زمانی که یک بهروزرسانی جدید قبل از اینکه انیمیشن فعلی فرصتی پیدا کند رخ میدهد. برای تکمیل.
هنوز ممکن است اصلاح شود، اما اگر میخواهید به اجرای فعلی این مثال نگاه کنید، میتوانید کد را در اینجا مشاهده کنید.
علاقه مند به کار برای Codecademy هستید؟
How to make animation with scratch صفحه مشاغل ما را بررسی کنید!
این مثال مانند نسخهای از یک ReactTransitionGroup است که برای چگونه با اسکرچ انیمیشن بسازیم فراخوانی انیمیشنهای ضروری برای مدیریت انتقالها بهینه شده است. در اینجا، والدین پایه isVisible را تغییر میدهند تا فرزند را نشان داده و پنهان کند، و متغیر حالت animatingOut اطمینان حاصل میکند که حتی اگر سایر بهروزرسانیها قبل از تکمیل انیمیشن، بایدComponentUpdate را راهاندازی کنند، عناصر خروجی به اندازه کافی در DOM نگه داشته میشوند تا به خوبی منتقل شوند. .
من در اینجا یک تماس setInterval دارم که آیتمهای عنصر را مستقل از چگونه با اسکرچ انیمیشن بسازیم انیمیشنهای ورودی و خروجی بهروزرسانی میکند، بنابراین میتوانید ببینید که این تنظیمات میتواند بهروزرسانیهای نامرتبط را بدون مانع از پیشرفت انیمیشن اصلی مدیریت کند.
مولفه HOC wrapper به شکل زیر است:
دو: متحرک سازی موقعیت های کامپوننت
پیوند به مثال زنده
پیوند به کد
این مثال پیچیده تر است و توجیه بهتری برای رویکرد انیمیشن دستی ارائه چگونه با اسکرچ انیمیشن بسازیم می دهد. در این انیمیشن هیچ عنصری به DOM وارد یا خارج نمی شود. در عوض، میخواهیم لحظهای را که گروهبندیها تغییر کردهاند، ببینیم و موقعیتهای بچهها را در حین حرکت به مکانهای جدیدشان متحرک کنیم. برای این نوع انیمیشن می توانیم از تکنیک FLIP استفاده کنیم:
موقعیت کودکان را درست قبل از سازماندهی مجدد ثبت کنید
منتظر بمانید تا مرورگر طرح بندی را اجرا کند
قبل از رنگ آمیزی تغییرات، تبدیل هایی را برای کودکان در componentDidUpdate اعمال کنید که باعث می شود آنها به موقعیت های قبلی خود برگردند.
انتقال را آغاز کنید تا به تدریج آنها را به مکان های به روز خود برگردانید
در زیر نمونهای از تابع انیمیشن است که دو بار توسط HOC فراخوانی چگونه با اسکرچ انیمیشن بسازیم میشود: ابتدا در componentWillReceiveProps، جایی که موقعیتهای اولیه اجزا را پنهان میکند و تابع دیگری را برای فراخوانی در componentDidUpdate برمیگرداند، که در واقع انتقالها را با anime.js انجام میدهد. مانند تمام مثالها، مؤلفه به فهرست، مرجع والد، توسط HOC ارسال میشود.
سه: ورود، به روز رسانی و خروج از انیمیشن به سبک D3
پیوند به مثال زنده
پیوند به کد
این مثال تکنیکهای دو مورد اول را ترکیب میکند – این بار، نه تنها در عناصر جدید متحرک میشویم و بهروزرسانیها را تا زمانی که بتوانیم عناصر خروجی را متحرک کنیم به تأخیر میاندازیم، بلکه منتظر اجرای طرحبندی componentDidUpdate هستیم تا بتوانیم بهآرامی آیتمهای بهروزرسانی را متحرک کنیم. به موقعیت چگونه با اسکرچ انیمیشن بسازیم های جدید خود در لیست قبل از ظاهر شدن موارد جدید. تابع shouldComponentUpdate مسئول مرتبسازی شناسهها به سه دسته enter، بهروزرسانی و خروج، و ارسال آن فهرست شناسهها به توابع انیمیشن مربوطه است، که از ویژگی data-id ذکر شده در بالا برای فیلتر کردن آیتمها به لیستی استفاده میکنند. نیاز به متحرک سازی
اگر مثال را در کتاب داستان بررسی کنید، شمارهای را خواهید دید که بهطور مداوم در حال بهروزرسانی در زیر انیمیشن ارائه میشود. این یک پایه است که از طریق انیمیشن HOC به مؤلفه List منتقل می شود. هدف آن نشان دادن این است که وقتی رویدادهای چرخه حیات به درستی مدیریت می شوند، انیمیشن های خروجی چگونه با اسکرچ انیمیشن بسازیم می توانند به صورت عادی پیش بروند، حتی زمانی که سایر منابع داده در حال به روز رسانی هستند. روشی که HOC این کار را تسهیل می کند با ذخیره کردن لیست قدیمی عناصر برای مدت زمان انیمیشن خروج است.
کد موجود در فایل انیمیشن پیچیدهترین کد از بین این سه مثال است، تا حدی به این دلیل که من سعی میکنم برخی از موارد لبه را در نظر بگیرم - مانند انیمیشنهای در حال پیشرفت با فوروارد سریع چگونه با اسکرچ انیمیشن بسازیم زمانی که یک بهروزرسانی جدید قبل از اینکه انیمیشن فعلی فرصتی پیدا کند رخ میدهد. برای تکمیل.
هنوز ممکن است اصلاح شود، اما اگر میخواهید به اجرای فعلی این مثال نگاه کنید، میتوانید کد را در اینجا مشاهده کنید.
علاقه مند به کار برای Codecademy هستید؟
How to make animation with scratch صفحه مشاغل ما را بررسی کنید!