السلام عليكم
هل يمكن وضع فنكشنس معينة(اكثر من واحدة) معمول بالجافاسكربت داخل انيميشن اي:
عند فتح الموقع (0% من مدة الانيميشن) تطبق الفنكشن الاولى
وعند 50% من ذلك الانميشن تطبق الفنكشن الثانية .....
وعليكم السلام.
في js لدينا الطريقة ()document.getAnimations والتي سترجع مصفوفة من الانميشن الذي سبق تعريفه والتي لا تزال فعالة -لم تنتهي- في css، وكل انميشن عبارة عن obj غرض يحوي اسم الانميشن والزمن الحالي: timeline - animationName وغيرها من الخصائص التي يمكنك الاستفادة منها.
كل ما عليك أن تحدد الانميشن عن طريق:
const myAnim = document.getAnimations().find(
animation => animation.animationName === "yourAnimationName" // اسم الانميشن الذي لديك
)
هذا سيرجع لك غرض هو الانميشن الذي تريده، وحتى تأتي بالزمن الحالي:
myAnim.currentTime
احسب الزمن الذي سيكون منتصف الانميشن وقسم الزمن الحالي عليه، مثلا أنا أريد بعد ثلاث ثوان أن تتنفذ وظيفة معينة ولتكن myfunction فكتبت:
const myFunction = () => {
console.log("START");
}
const interval = setInterval(() => {
const time = document.getAnimations().find(
animation => animation.animationName === "myAnimation")
.currentTime
if(Math.floor(time / 3100 - 1) === 0) { // يتحقق عندما يصبح زمن بداية البرنامج ثلاث ثوانٍ أول مرة
myFunction(); // أنفذ الوظيفة التي أريدها
clearInterval(interval); // أنهي الحدث لأني لن أحتاجه بعد التنفيذ
}
}, 1000)
إذا كان الانميشن الخاص بك لا يبدأ مع بداية البرنامج فبإمكانك أن تأتي بزمن بداية الانميشن عن طريق
const startAt = myAnim.startTime
تطرحه من الtimeLine فيصبح معك كم مضى من الوقت على بداية الانميشن، وهكذا يمكنك التحكم بأي أنميشن.
التعليقات