בדיקת לוח הציור באמצעות כלי הפיתוח ל-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 יש תכונה חדשה של 'בדיקת לוח הציור' שמאפשרת לנו לעשות את זה!

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

תחילת העבודה

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

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

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

הפעלה של בדיקת לוח הציור בניסויים בכלי הפיתוח
איור 2 – הפעלה של בדיקת לוח הציור בניסויים של כלי הפיתוח

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

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

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

הפעלת הכלי לניתוח ביצועי לוח הציור
איור 3 – מעבר ב-Canvas Profiler

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

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

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

זהו, אנחנו מוכנים להתחיל לצלם!

לכידת פריימים

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

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

פרופיל קנבס בכלי הפיתוח.
איור 5 – פרופיל קנבס בכלי הפיתוח

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

בחירת ההקשר של קנבס.
איור 6 – בחירת ההקשר של הקנבס

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

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

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

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

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

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

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

חשוב לשמוע!

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