יצירת אפליקציה עבור אובונטו טאץ '[QML] - [חלק 3]

יצירת אפליקציה לאובונטו טאץ '

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

                תווית {id: כשלים טקסט: "כשלים:" + n תקלות צבע: "אדום"} תווית {id: hits text: "hits:" + born} תווית {id: נקודות טקסט: "נקודות:" + n נקודות גופן גודל: "בינוני "}

המשך לוגיקת המשחק

זמן

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

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

קוד טיימר (אנחנו יכולים לשים אותו מתחת ל- ProgressBar):

       ProgressBar {id: time anchors.horizontalCenter: parent.horizontalCenter minimumValue: 0 maximumValue: 300} Timer {id: simpletimer c: 100 repeat: true running: true onTriggered: {if (time.value <time.maximumValue) time.value + = 1.0 אחר {nfaults = nfeults + 1 if (nfaults <3) {num = num + 1 Logic.nextQuestion (num) time.value = time.minimumValue} אחר {simpletimer.stop () PopupUtils.open (שיח)}} }}

כפי שאנו רואים, ב- onTriggered שמנו את הקוד שיגדיל את סרגל ההתקדמות והוספנו יחידה אחת בכל 1 (הפסקהמילי-שניות. שים לב שהוספנו ל- ProgressBar שתי תכונות, minimumValue ו- maximumValue, שכפי שאתה יכול לראות, הוא הערך המקסימלי והערך המינימלי.

להפעלה ולעצירת הטיימר:

simpletimer.start () simpletimer.stop ()

אפשרויות (50%, הקפאה והבא)

ראשית בואו ניצור שלושה משתנים השולטים כי ניתן להשתמש באפשרויות רק פעם אחת:

    אחוז int אחוז: 0 נכס int עם: 0 נכס int הבא: 0

50%

כפתור {id: b50 טקסט: "50%" ב- לחצו: {if (אחוז == 0) {var נכון = aDocument.contents.questions [num] .correcta if (correct == 1) {resp2.enabled = false resp3. מופעל = שקר} אחר אם (נכון == 2) {resp1.enabled = false resp4.enabled = false} אחרת אם (correct == 3) {resp1.enabled = false resp4.enabled = false} אחר {resp2.enabled = שגיאה resp1.enabled = שקר} אחוז = 1}}

עם מופעל = שקר מה שאנחנו עושים זה לשים את הכפתור כך שלא ניתן יהיה ללחוץ עליו, בצורה כזו שנקבל את התשובה הנכונה עם aDocument.contents.questions [num]. נכון ומכאן תלוי איזו נכונה «אנו מסירים »שני כפתורים שאינם.

להקפיא

                כפתור {id: bCon text: "Freeze" on לחצו: {if (עם == 0) simpletimer.stop () עם = 1}}

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

הַבָּא

                 כפתור {id: b טקסט הבא: "הבא" on לחצו: {if (הבא == 0) {num = num + 1 Logic.nextQuestion (num) next = 1}}}

אנו משתמשים בפונקציה שכבר יצרנו כדי להעביר את השאלה (nextQuestion).

דיאלוגים

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

יבוא אובונטו. Components.Popups 0.1

אנו הולכים ליצור את הדו-שיח שאומר לנו שהפסדנו:

        רכיב {id: Dialog Dialog {id: title title: "Game Over!" טקסט: "איבדת את כל החיים :(" כפתור {text: "צא" ב- לחץ: Qt.quit ()} לחצן {text: "התחל מחדש" צבע: UbuntuColors.orange on לחץ: {num = 0; Logica.nextQuestion ( מספר) npoints = 0 לידות = 0 PopupUtils.close (דיאלוג)}}}}

יש לנו שני כפתורים, אחד לסגירת היישום (Qt.quit ()) ואחד כדי להתחיל את המשחק מחדש. אנו מאותחלים את המשתנים ל -0 וסוגרים את תיבת הדו-שיח.

לפתיחת תיבת הדו-שיח:

PopupUtils.open (שיח)

כדי לסגור את זה:

PopupUtils.close (דיאלוג)

בואו נראה את הדיאלוג בסוף המשחק:

מגע אובונטו

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

תכנון השאלה מצטברת

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

כפי שאנו רואים, נשתמש בתווית, ב- TextArea כדי לכתוב את השאלה, 4 TextField ו- 4 Switch; לבסוף, כפתור להוסיף את השאלה. בואו נסתכל על הקוד:

ייבא QtQuick 2.0 לייבא את אובונטו.רכיבים 0.1 כרטיסייה {כותרת: i18n.tr ("+ שאלות") דף {id: pageAdd עמודה {anchors.top: pageAdd.top anchors.top מרווח: 50 מרווח: 15 רוחב: parent.width גובה: parent.height - 50 תווית {id: טקסט שאלה: "הוסף שאלה למסד הנתונים:" anchors.horizontalCenter: parent.horizontalCenter fontSize: "large"} TextArea {width: parent.width - 20 height: units.gu (12) contentWidth: units.gu (30) contentHeight: units.gu (60) anchors.horizontalCenter: parent.horizontalCenter} שורה {מרווח: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "תגובה 1" רוחב: 300 </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s>} החלף {מסומן: שקר}} שורה {מרווח: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "תגובה 2" רוחב: 300} Switch {מסומן: false}} שורה {spacing: 15 anchors.horizontalCenter: הורה. horizontalCenter TextField {placeholderText: "תגובה 3" רוחב: 300} מתג {מסומן: false}} שורה {מרווח: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "תגובה 4" רוחב: 300} Switch {בדוק: שקר}} לחצן {text: "הוסף +" anchors.horizontalCenter: parent.horizontalCenter רוחב: parent.width - 20}}}}
אם יש ספק בקוד אתה כבר יודע להגיב

בואו נראה איך זה נראה:

לכידה מ 2014-07-24 16:54:37

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

             שורה {מרווח: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {id: res1 placeholderText: "תגובה 1" רוחב: 300} מתג {id: sw1 מסומן: false on לחץ: {if (sw1.checked == true) {sw2. בדק = שקר sw3.checked = שקר sw4.checked = false}}}}

אם ננסה זאת כעת נראה כיצד נוכל לסמן רק אחת.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   vr_rv דיג'ו

    מאמרים טובים מאוד ומוסברים היטב.
    אגב, האם אתה ממליץ על כמה ספרים, ערוצי YouTube או בלוגים בספרדית כדי ללמוד כיצד להתפתח ב- QML לאובונטו.

    1.    לולבימבו דיג'ו

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

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

  2.   נסטור דיג'ו

    סדרת פוסטים מעולה, תודה על הקלט.

  3.   מארטי דיג'ו

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