דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. אי דיוק של MouseEvent על קנבס

אי דיוק של MouseEvent על קנבס

מתוזמן נעוץ נעול הועבר תכנות
7 פוסטים 4 כותבים 372 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • שלום עולם 0ש מנותק
    שלום עולם 0ש מנותק
    שלום עולם 0
    כתב ב נערך לאחרונה על ידי שלום עולם 0
    #1

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

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

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

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

    כדי לפתור את זה הוספתי עוד בדיקה: מוצאים את המיקום הקודם של הסמן, ואם המיקום הקודם הוא לפני הספרה 12 (=מרכז השעון), והמיקום הנוכחי הוא אחרי – צריך להוסיף שעה. המיקום הקודם מחושב ע"י event.clientX-event.movementX.

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

    אני לא מצליח למצוא את הבעיה. לכאורה החישובים והתנאים הם ללא רבב ואמורים לעבוד.

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

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

    WWWW OdedDvirO yossizY 3 תגובות תגובה אחרונה
    4
    • WWWW מנותק
      WWWW מנותק
      WWW
      השיב לשלום עולם 0 ב נערך לאחרונה על ידי
      #2

      @שלום-עולם-0 לא עברתי על הקוד.
      אבל אצלי נראה שכשהוא מתכוונן אחורה ומגיע בדיוק על 12 זה קורה, כשממשיכים הלאה זה חוזר לשעה האמיתית.
      ככל הנראה משהו בחישוב, אך כאמור אין לי כח להתעמק בקוד.

      WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

      שלום עולם 0ש תגובה 1 תגובה אחרונה
      0
      • שלום עולם 0ש מנותק
        שלום עולם 0ש מנותק
        שלום עולם 0
        השיב לWWW ב נערך לאחרונה על ידי
        #3

        @WWW כתב באי דיוק של MouseEvent על קנבס:

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

        תן לי להבין בדיוק: זה עובד נכון רק בהזזה אחורה אבל לא בהזזה קדימה?

        WWWW תגובה 1 תגובה אחרונה
        0
        • OdedDvirO מנותק
          OdedDvirO מנותק
          OdedDvir
          השיב לשלום עולם 0 ב נערך לאחרונה על ידי OdedDvir
          #4

          @שלום-עולם-0 כתב באי דיוק של MouseEvent על קנבס:

          אני לא מצליח למצוא את הבעיה. לכאורה החישובים והתנאים הם ללא רבב ואמורים לעבוד.

          לא הצלחתי לשחזר את הבאג

          מה יכולה להיות הסיבה לבעיה?

          אני מעלה השערה שזו אולי בעיה בחומרה שלך, למשל, העכבר שלך משדר תנועות מזעריות כשהוא זז לאט.

          או איך אפשר להתגבר עליה?

          תוכל להדפיס לקונסול באופן רציף את את ערכי event.clientX ו event.movementX לפני שאתה משנה את השעה ולבדוק מדוע החישוב שגוי

          שלום עולם 0ש תגובה 1 תגובה אחרונה
          0
          • WWWW מנותק
            WWWW מנותק
            WWW
            השיב לשלום עולם 0 ב נערך לאחרונה על ידי WWW
            #5

            @שלום-עולם-0 כתב באי דיוק של MouseEvent על קנבס:

            תן לי להבין בדיוק: זה עובד נכון רק בהזזה אחורה אבל לא בהזזה קדימה?

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

            WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

            תגובה 1 תגובה אחרונה
            0
            • yossizY מנותק
              yossizY מנותק
              yossiz
              השיב לשלום עולם 0 ב נערך לאחרונה על ידי yossiz
              #6

              @שלום-עולם-0 כתב באי דיוק של MouseEvent על קנבס:

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

              הפוך, זה נותן חשק לעזור, כי זה סימן שאתה מעוניין בתשובה עצמה ולא רק ב-💵 💵

              כל הכבוד על הפרוייקט הנחמד
              לצערי עוד לא יצא לי להתעמק בקוד שלך
              אבל הצלחתי לשחזר את הבאג

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              תגובה 1 תגובה אחרונה
              3
              • שלום עולם 0ש מנותק
                שלום עולם 0ש מנותק
                שלום עולם 0
                השיב לOdedDvir ב נערך לאחרונה על ידי
                #7

                @OdedDvir כתב באי דיוק של MouseEvent על קנבס:

                לא הצלחתי לשחזר את הבאג

                נסה להזיז את מחוג השניות על 12, לאט. אצלי זה מקפיץ את מחוג הדקות בכמה דקות טובות.

                תגובה 1 תגובה אחרונה
                0

                בא תתחבר לדף היומי!
                • התחברות

                • אין לך חשבון עדיין? הרשמה

                • התחברו או הירשמו כדי לחפש.
                • פוסט ראשון
                  פוסט אחרון
                0
                • דף הבית
                • קטגוריות
                • פוסטים אחרונים
                • משתמשים
                • חיפוש
                • חוקי הפורום