באג: MouseEvent.Mouse_UP זורק שגיאה בקומפוננטות scrollable
באג:
כאשר מסירים דינאמית קומפוננטה scrollable כאשר המשתמש עדיין נמצע בפעולת scroll (העכבר לחוץ), ברגע שהמשתמש ישחרר את העכבר תזרק הודעת השגיאה הבאה:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at fl.controls::ScrollBar/thumbReleaseHandler()
הסיבה
כאשר המשתמש לוחץ על עכבר בקומפוננטה שהיא scrollable, מופעלת האזנה ל-MouseEvent.MOUSE_UP על מנת לשחרר את הקומפוננטה ברגע שחרור העכבר. הבעיה במקרה זה, שהאובייקט לו מאזינים הוא ה-stage, וכאשר מתרחש ה-event, הוא משתחרר על ידי ה-callback באופן הבא:
stage.removeEventListener(MouseEvent.MOUSE_UP,thumbReleaseHandler);
אולם כאשר מסירים את האובייקט מהבמה, אובייקט ה-stage אינו קיים יותר ולכן הקריאה נופלת.
בנוסף, לא ניתן להשתמש ב-try/catch על מנת שהשגיאה לא תופיע אצל ה-client מכיוון שהאובייקט הוא קומפוננטה גנרית של Flash.
פתרון אפשרי
workaround שעובד במקרה הזה הוא לזרוק event מהקומפוננטה של MouseEvent.Mouse_UP על מנת לבטל את ההאזנה ל-event אחרי שנעלם האובייקט.
comboBox.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP));
comboBox.close();






תגובות אחרונות