בעיית הבהוב בג'אווה

redhat

New member
בעיית הבהוב בג'אווה

שלום לכולם, אני מצייר sprites בג'אווה(בפונקציה של paint), וכל כמה שניות יש הבהוב של הדמויות. משהוא מכיר את הבעיה ואולי מכיר פתרון?
 

skatetough

New member
שאלה בקשר לזה...

אף פעם לא הבנתי למה זה ככה... אם אני מעביר את הזיכרון מהחוצץ האחורי לקדמי במקום פשוט לצייר על המסך זה לא אותו דבר?
 

redhat

New member
אני לא מכיר את הנושא הזה של החוצצים

שהזכרת. אבל כרגע סיימתי להסב את מה שכתבתי עד עכשיו לשימוש ב double buffering, ואין לי שום היבהוב, מה שנקרא flickering, וזה נראה מעולה, פשוט מעולה, עולם אחר לעומת מה שהיה.
 

De-Panther

New member
אמכבר אז מישהו בעבר שם פה בפורום קישור לאתר..

שמלמד בצורה דיי פשוטה לפתח משחקים לג'אווה נסו לחפש כאן בחיפוש המתקדם JAVA או ג'אווה
 

voguemaster

New member
ואם כבר

אם אתה מצייר את על כל השטח, אתה יכול תמיד לחסוך את ניקוי המסך לצבע הרקע. תשתמש ב-setOpaque(true) על ה-CONTROL שאתה מצייר. ובכלל, DOUBLE BUFFERING לא אמור להיות מופעל בברירת מחדל ב-SWING ?
כשאני כתבתי CUSTOM PAINTING לא נתקלתי בשום בעיה....
 

yoniBLA

New member
הסבר

אתה לא מעביר את הזיכרון מהחוצץ האחורי לקדמי, אתה מבצע flip ביניהם. אתה בעצם הופך את האחורי לקדמי ואת הקדמי לאחורי בלי להעתיק זיכרון.
 

HackMachine

New member
תשובה לשאלה

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