الكشف الكامل: أنا أكره الحلقات. لقد استغرق الأمر مني وقتًا طويلاً لفهمها، ولكن أعتقد أنني فهمت غرضها أخيرًا.
في البداية، في كل مرة حاولت فيها كتابة حلقة خاصة بي، كنت أتعطل برنامج After Effects على الفور. الآن بعد أن أصبح لدي المزيد من المعرفة حول الأخطاء التي حدثت، أريد أن أكتب ما هي حلقة while ومتى يتم استخدامها وكيف يمكنك دمجها في تعبيرات After Effects دون تعطل مشروعك (تذكر أن تحفظ بانتظام، يا قوم).
حلقة while، كما يوحي اسمها، هي حلقة يتم تنفيذها طالما أن التعبير صحيح.
"يتم تنفيذه طالما أن التعبير صحيح" - يبدو هذا يشبه إلى حد ما عبارة if، أليس كذلك؟
if (timeإذا قمت بإضافة هذا التعبير إلى خاصية النص المصدر لطبقة النص، فستجد أن النص يقرأ "النص قيد التشغيل" لأول ثانيتين من المخطط الزمني الخاص بك، ولا يعرض أي نص بعد ذلك الوقت. تتحقق عبارة if مما إذا كان التعبير صحيحًا أم لا، وإذا كان كذلك، فإنه ينفذ الأمر مرة واحدة، ومرة واحدة فقط.
ومع ذلك، إذا قمت بتغييره إلى هذا التعبير، فستجد أن After Effects يتعطل على الفور تقريبًا:
while (timeوذلك لأن الحلقة أثناء هي حلقة ، لذا فهي تنفذ الأمر بشكل متكرر إذا كانت العبارة صحيحة. طالما أن المؤشر موجود في أول ثانيتين من المخطط الزمني الخاص بك، فإن الحلقة سوف تتكرر بشكل لا نهائي . ليس مثاليًا تمامًا، وبالتأكيد ليس ما كنا نحاول تحقيقه! من المهم التأكد من أن حلقة while الخاصة بك ستصبح خاطئة في النهاية لتجنب هذه الحلقات اللانهائية.
لمزيد من المعلومات حول عبارات if، راجع مقالتي السابقة هنا.
بينما الحلقات مقابل الحلقات
حسنًا، من المهم ملاحظة عدم استخدام حلقات while مثل عبارات if. ولكن هناك أنواعًا أخرى من الحلقات يمكننا استخدامها لإنشاء تعبيرات. كيف تختلف حلقة while عن حلقة for، على سبيل المثال؟
تعمل حلقة for مع 3 وسيطات، وهي مثالية عندما تعرف عدد المرات التي تحتاج فيها لتكرار أوامرك.
خذ هذا المثال، توليد أرقام عشوائية:
//variables let counter = 0; let num = 0; let numArray = []; //For loop for (let i = 0; time >= i/2; i ) { seedRandom(counter, timeless = true); num = Math.floor(random(1, 6)); numArray.push(num); counter } //return numArray[counter - 1]بعد إعداد المتغيرات الخاصة بي، تبدأ الحلقة بـ Let i = 0، مع تعيين الوسيط الأول الذي ينفذ مرة واحدة. بعد ذلك، يحدد الوقت >= i/2 عدد مرات تنفيذ الحلقة. ضبط الحلقة بهذه الطريقة يعني تنفيذ الحلقة مرتين كل ثانية، لأن الوقت يجب أن يكون أكثر من أو يساوي نصف i. أخيرًا، سأقوم بتشغيل الوسيطة الثالثة في كل مرة بعد تنفيذ الحلقة. في هذه الحالة، تزيد قيمة i بمقدار 1.
سيؤدي تشغيل هذا التعبير مرة أخرى في خاصية النص المصدر لطبقة النص إلى عرض رقم عشوائي بين 1 و5 مرتين كل ثانية.
لمزيد من المعلومات حول الحلقات، راجع مقالتي السابقة هنا.
من الأفضل استخدام حلقة while عندما لا تعرف عدد المرات التي ستحتاج إلى تنفيذها. ولهذا السبب، وجدت أنها لا تعمل بشكل جيد مع التعبيرات التي تتضمن وقتًا تعمل حلقات مثل for بشكل جيد جدًا، حيث يؤدي ذلك إلى حبسك في تلك الحلقات اللانهائية المزعجة.
إذن متى يجب أن نستخدم أثناء الحلقات؟
متى تستخدم أثناء الحلقات
مع أخذ كل هذا في الاعتبار، يجب استخدام حلقة while في الحالات التالية:
لقد وجدت مؤخرًا استخدامًا لهذا في After Effects، أثناء العمل على مشروع مولد الأرقام العشوائية.
دعونا نلقي نظرة على الكود التالي:
//variables let counter = 0; let num = 0; let numArray = []; //For loop for (let i = 0; time >= i/2; i ) { seedRandom(counter, timeless = true); num = Math.floor(random(1, 6)); //While loop inside of For loop while (num == numArray[counter - 1]) { num = Math.floor(random(1, 6)); } numArray.push(num); counter } //return numArray[counter - 1]
في هذه الحالة، تتحقق حلقة while لمعرفة ما إذا كانت القيمة الحالية لـ num تساوي القيمة السابقة المخزنة في مصفوفة numArray. إذا حدث ذلك، فسيتم إنشاء رقم عشوائي جديد بين 1 و5. سيتم تنفيذ الحلقة طالما أن الرقم والرقم السابق المخزن في المصفوفة متماثلان. ومع ذلك، بمجرد عدم تطابق الأرقام، تنتهي حلقة while، ويصبح التعبير حرًا للمتابعة إلى السطر التالي من التعليمات البرمجية.
لأنني قد أضطر إلى إنشاء رقم عشوائي جديد أكثر من مرة، فإن عبارة if لا تعمل هنا.
ولأنني لا أعرف عدد المرات التي سأحتاج فيها إلى تحديث الرقم العشوائي ، فإن عدد الحلقات هو أيضًا لغز: لذا فإن حلقة for ليست جيدة هنا أيضًا.
لذلك فإن حلقة while هي خياري الأفضل. سيتم تنفيذه عدة مرات حسب رغبتي، حتى تصبح الوسيطة الموجودة بداخله خاطئة ، وهو ما سيحدث بالتأكيد طالما أن الدالة Random() تولد رقمًا لا يتطابق مع الرقم السابق.
في الختام، من المحتمل أن تكون حلقات while أداة غير شائعة في حزام التعبير After Effects الخاص بك. ومع ذلك، فمن المفيد تعلمها، في الحالات التي قد لا تكون فيها المشتبه بهم المعتادون مناسبين.
هل وجدت هذا مفيدًا؟ هل لديك مثال لاستخدام حلقة while في مشروعك؟ هل حصلت على شيء خاطئ؟ من فضلك اترك لي تعليق واسمحوا لي أن أعرف.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3