בדיקת לוח הציור באמצעות כלי הפיתוח ל-Chrome

מבוא

זה לא משנה אם משתמשים בהקשר דו-ממדי או ב-WebGL, כל מי שעבד אי פעם עם הרכיב <canvas> יודע שיכול להיות קשה מאוד לנפות באגים. עבודה עם קנבס בדרך כלל כוללת רשימה ארוכה של קריאות שקשה לעקוב אחריהן:

function draw() {

  context.clearRect(0, 0, 258, 258);
  context.fillStyle = "#EEEEEE";
  context.beginPath();
  context.arc(129, 129, 127, 0, 6.28, true);
  context.closePath();
  context.fill();

  // … and on and on
}

לפעמים רוצים לתעד את ההוראות שנשלחות להקשר של לוח ציור ולעבור עליהן אחת אחרי השנייה. למרבה המזל, יש תכונה חדשה של בדיקת משטח ציור בכלים למפתחים של Chrome שמאפשרת לנו לעשות בדיוק את זה.

במאמר הזה אראה לכם איך להשתמש בתכונה הזו כדי להתחיל לנפות באגים בעבודה שלכם על קנבס. בכלי אפשר לבדוק גם הקשרים 2D וגם הקשרים WebGL, כך שלא משנה באיזה הקשר אתם משתמשים, תוכלו לקבל מידע שימושי על ניפוי באגים באופן מיידי.

תחילת העבודה

כדי להתחיל, עוברים אל about:flags ב-Chrome ומפעילים את האפשרות 'הפעלת ניסויים בכלים למפתחים'.

הפעלת ניסויים בכלים למפתחים בדף about:flags.
איור 1 – הפעלת ניסויים בכלים למפתחים ב-about:flags

בשלב הבא, עוברים לכלי הפיתוח ולוחצים על גלגל השיניים סמל גלגל השיניים בפינה השמאלית התחתונה. משם אפשר לעבור אל ניסויים ולהפעיל את בדיקה של לוח הציור:

הפעלת בדיקת Canvas בניסויים של DevTools
איור 2 – הפעלת בדיקת Canvas בניסויים של DevTools

כדי שהשינויים ייכנסו לתוקף, צריך לסגור ולפתוח מחדש את כלי הפיתוח (אפשר להשתמש ב-Alt+R או ב-Option+R, חלופה שימושית).

כשכלי פיתוח ייפתחו מחדש, תוכלו לעבור לקטע 'פרופילים' > אפשרות חדשה של Canvas Profiler.

בשלב הראשון, תבחינו שהכלי Canvas Profiler מושבת. אחרי שיוצרים דף שמכיל לוח קנבס שרוצים לנפות באגים בו, פשוט לוחצים על Enable (הפעלה) והדף נטען מחדש ומאפשר לתעד את הקריאות ל-<canvas>:

הפעלת ה-Canvas Profiler
איור 3 – הפעלת Canvas Profiler

צריך להחליט אם רוצים לצלם פריים יחיד או פריים רצוף, כאשר הפריים זהה לחלוטין לזה שיוצג בציר הזמן של DevTools.

פריים יחיד מתעד את הקריאות עד לסוף הפריים הנוכחי, ואז מופסק. לעומת זאת, פריימים עוקבים מצלמים את כל הפריימים של כל רכיבי <canvas> עד שאתם מגדירים לו להפסיק. הבחירה במצב תלויה באופן שבו משתמשים ברכיב <canvas>. כדי ליצור אנימציה מתמשכת, כדאי לצלם פריים אחד. כדי ליצור אנימציה קצרה שמתרחשת בתגובה לאירוע של משתמש, יכול להיות שתצטרכו לצלם פריימים רצופים.

בחירת מספר הפריימים שרוצים לצלם
איור 4 – בחירת מספר הפריימים לצילום

עכשיו הכול מוכן ואפשר להתחיל לצלם.

צילום פריימים

כדי לצלם, פשוט לוחצים על התחלה ולאחר מכן מבצעים פעולות באפליקציה כרגיל. אחרי זמן מה, חוזרים אל כלי הפיתוח. אם מבצעים הקלטה רציפה, לוחצים על עצירה.

עכשיו יש לכם פרופיל חדש ברשימה שבצד ימין, עם מספר הקריאות להקשר שתועדו בכל הרכיבים של <canvas>. לוחצים על הפרופיל ומוצג מסך שנראה בערך כך:

פרופיל קנבס ב-DevTools.
איור 5 – פרופיל קנבס ב-DevTools

בחלונית התחתונה תופיע רשימה של כל הפריימים שאפשר לצלם. אחרי שתלחצו על כל אחד מהפריימים, צילום המסך שלמעלה יראה את המצב של הרכיב <canvas> בסוף הפריים. אם יש כמה רכיבי <canvas>, אפשר לבחור איזה מהם יוצג באמצעות התפריט שמתחת לצילום המסך.

בחירת ההקשר של לוח הציור.
איור 6 – בחירת ההקשר של אזור העריכה

בתוך המסגרת יופיעו קבוצות של שיחות מצוירות. כל קבוצת קריאות לציור מכילה קריאה אחת לציור, שתהיה הקריאה האחרונה בקבוצה. אז מהי קריאה לציור? בהקשר דו-מימדי, אלה יכולים להיות clearRect(),‏ drawImage(),‏ fill(),‏ stroke(),‏ putImageData() או כל פונקציית עיבוד טקסט, וב-WebGL אלה יכולים להיות clear(),‏ drawArrays() או drawElements(). בעיקרון, כל דבר שיכול לשנות את התוכן הנוכחי של מאגר הציור. (אם אתם לא מתמצאים בגרפיקה, אפשר לחשוב על מאגר כקובץ BMP עם פיקסלים שאנחנו מבצעים בהם מניפולציה).

עכשיו כל מה שצריך לעשות הוא לעבור על הרשימה. אפשר לעשות זאת ברמת המסגרת, ברמת קבוצת השיחות או ברמת השיחה. בכל דרך שבה תבחרו לעבור ברשימה (יש לחצנים מתחת לצילום המסך שיעזרו לכם לנווט במהירות), תוכלו לראות את ההקשר באותו שלב. כך תוכלו למצוא ולתקן באגים במהירות כשהם מופיעים.

לחצני ניווט לעבור בקלות בין רשימות.
איור 7 – לחצני ניווט לעבור בקלות בין רשימות

איך מזהים את ההבדלים

תכונה שימושית נוספת היא היכולת לראות אילו מאפיינים ומשתנים השתנו בין שתי קריאות.

כדי לראות שפשוט לוחצים על הלחצן של סרגל הצד (סמל של סרגל צד.), תיפתח תצוגה חדשה. כשתסיימו את תהליך המשיכה, תראו את המאפיינים שעודכנו. תוכלו לראות את התוכן של מאגרים או מערכי נתונים אם תעבירו את העכבר מעליהם.

איך מזהים את ההבדלים

תהיו שומעים!

עכשיו אתם יודעים איך לנפות באגים בקוד שלכם ללוח הציור באמצעות כלי הפיתוח של Chrome. אם יש לכם משוב על הכלי Canvas Profiler, אתם יכולים לדווח על באג או לפרסם פוסט בקבוצת Chrome DevTools. אם מצאתם באגים או אם יש לכם הצעות נוספות לתכונות שתרצו לראות בבדיקה של <canvas>, נשמח לשמוע מכם. רק באמצעות השימוש של המפתחים והמשוב שלהם אנחנו יכולים לשפר את הכלים של Chrome.