Створення програми для Ubuntu Touch [QML] - [Частина 3]

Створення програми для Ubuntu Touch

Третя частина цієї серії постів (перша частина, друга частина), де ми створюємо додаток Ubuntu сенсорний або за те саме Ubuntu робочий стіл. Я збираюся додати частину, яка трапилася зі мною в попередньому дописі, і це те, що, хоча ми збільшили змінні відмов, звернень і балів, вони не відображалися на екрані, тобто тому, що ми не змінювали властивість тексту Етикетки:

                Етикетка {id: текст помилок: "Помилки:" + колір n: помилки: "червоний"} Етикетка {id: звертається до тексту: "Попадання:" + народжена} Етикетка {id: точки тексту: "Точки:" + nпунктів fontSize: "середній "}

Продовження ігрової логіки

Час

Ну, як ми вже знаємо, індикатор progress показує час, який ми маємо відповісти на питання. Для управління часом ми будемо використовувати таймер, таймер - це елемент, який повторюється з інтервалом х мілісекунд, в цьому випадку кожен інтервал ми скажемо йому, щоб збільшити хід 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 else {nfaults = nfaults + 1 if (nfaults <3) {num = num + 1 Logic.nextQuestion (num) time.value = time.minimumValue} else {simpletimer.stop () PopupUtils.open (dialog)}} }}

Як бачимо, у onTriggered ми помістили код, який збільшить індикатор прогресу, додаючи 1 одиницю кожні 100 (інтервал) мілісекунд. Зверніть увагу, що ми додали два атрибути до ProgressBar, minimumValue і maximumValue, що, як бачите, є максимальним значенням і мінімальним значенням.

Щоб запустити і зупинити таймер:

simpletimer.start () simpletimer.stop ()

Параметри (50%, заморозити і далі)

Спочатку давайте створимо три змінні, які контролюють, що параметри можна використовувати лише один раз:

    властивість int відсоток: 0 властивість int з: 0 властивість int наступна: 0

50%

Кнопка {id: b50 text: "50%" onClicked: {if (процент == 0) {var correct = aDocument.contents.questions [num] .correcta if (правильно == 1) {resp2.enabled = false resp3. enabled = false} else if (правильно == 2) {resp1.enabled = false resp4.enabled = false} else if (правильно == 3) {resp1.enabled = false resp4.enabled = false} else {resp2.enabled = false resp1.enabled = false} процент = 1}}

З enabled = false, що ми робимо, ставимо кнопку так, щоб її не можна було натиснути, таким чином, що ми отримуємо правильну відповідь за допомогою aDocument.contents.questions [num]. »Дві кнопки, які не є.

Заморозити

                Кнопка {id: bCon text: "Заморозити" onClicked: {if (with == 0) simpletimer.stop () with = 1}}

Це один з найпростіших, нам просто потрібно зупинити таймер за допомогою simpletimer.stop (), так, ми повинні його знову увімкнути (і встановити progressBar на 0), коли ми проходимо через питання.

МАЙБУТНІ

                 Кнопка {id: bНаступний текст: "Далі" onClicked: {if (next == 0) {num = num + 1 Logic.nextQuestion (num) next = 1}}}

Ми використовуємо функцію, яку ми вже створили, для передачі запитання (nextQuestion).

Діалоги

Щоб закінчити гру, ми будемо використовувати діалог, або тому, що ми виграли (більше питань немає), або тому, що програли (ми зробили 3 помилки), для використання діалогових вікон нам потрібно імпортувати модуль:

імпортувати Ubuntu.Components.Popups 0.1

Ми збираємося створити діалогове вікно, яке повідомляє нам, що ми програли:

        Компонент {id: dialog Dialog {id: dialog title: "Game over!" text: "Ви втратили все життя :(" Button {text: "Quit" onClicked: Qt.quit ()} Button {text: "Start over" color: UbuntuColors.orange onClicked: {num = 0; Logica.nextQuestion ( num) npoints = 0 народжень = 0 PopupUtils.close (діалог)}}}}

У нас є дві кнопки, одна для закриття програми (Qt.quit ()), а інша для початку гри знову. Ми ініціалізуємо змінні до 0 і закриваємо діалогове вікно.

Щоб відкрити діалогове вікно:

PopupUtils.open (діалогове вікно)

Щоб закрити:

PopupUtils.close (діалог)

Побачимо діалог наприкінці гри:

Ubuntu сенсорний

Ми можемо створити діалогове вікно точно так само, змінивши ідентифікатор та текст, де написано, що ми перемогли.

Проектування сукупності запитань

Коли ми розробляємо це в GTK, ми створюємо діалогове вікно, але цього разу ми будемо робити це на вкладці, в будь-якому випадку воно матиме однакову структуру:

Як бачимо, для написання запитання ми будемо використовувати Label, TextArea, 4 TextField і 4 Switch; нарешті, кнопка для додавання запитання. Давайте просто подивимось на код:

імпортувати QtQuick 2.0 імпортувати Ubuntu.Components 0.1 Tab {title: i18n.tr ("+ Питання") Сторінка {id: pageAdd Column {anchors.top: pageAdd.top anchors.topMargin: 50 spacing: 15 width: parent.width height: parent.height - 50 Label {id: text question: "Додати питання до бази даних:" 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 якорів.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Response 1" width: 300 U} Перемикач {check: false}} Рядок {spacing: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Response 2" width: 300} Switch {check: false}} Row {spacing: 15 anchors.horizontalCenter: parent. horizontalCenter TextField {placeholderText: "Response 3" width: 300} Switch {check: false}} Row {spacing: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Response 4" width: 300} Switch {перевірено: false}} Кнопка {текст: "Додати +" anchors.horizontalCenter: parent.horizontalCenter ширина: parent.width - 20}}}}
Якщо є сумніви щодо коду, ви вже знаєте коментар

Давайте подивимось, як це виглядає:

Захоплення з 2014-07-24 16:54:37

Якщо ми зараз протестуємо Комутатори, ми побачимо, що ми можемо позначити їх усі як правильне запитання, і, природно, може бути лише одне, тому ми зробимо наступне: ми зможемо надати ідентифікатор кожному комутатору (також текстовим полям, оскільки нам доведеться отримати вміст, щоб зберегти його в база даних) відповідно до вашої відповіді, і коли ми клацнемо на ній, ми переведемо всі інші в перевірений = помилковий режим:

             Рядок {інтервал: 15 якорів.horizontalCenter: parent.horizontalCenter TextField {id: res1 placeholderText: "Response 1" width: 300} Switch {id: sw1 check: false onClicked: {if (sw1. checked == true) {sw2. перевірено = хибно sw3. перевірено = хибно sw4. перевірено = хибно}}}}

Якщо спробувати зараз, ми побачимо, як ми можемо позначити лише одну.


4 коментарі, залиште свій

Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   вр_рв - сказав він

    Дуже хороші та добре розтлумачені статті.
    До речі, чи рекомендуєте ви деякі книги, канали YouTube чи блоги, які написані іспанською мовою, щоб навчитися розробляти в QML для Ubuntu.

    1.    лолбімбо - сказав він

      Що ж, іспанською мовою є, звичайно, кілька підручників на YouTube чи дивному блозі, але правда полягає в тому, що матеріалів мало.

      Я бачу, що ви підключаєтеся через nokia, якщо це Symbian останнього, ви також можете створювати програми з QML, насправді це те, як я дізнався, ось веб-сайт про розробку nokia: http://developer.nokia.com/ (є навчальні посібники, повні проекти ...)

  2.   Nestor - сказав він

    Відмінна серія публікацій, дякую за вступ.

  3.   Марті - сказав він

    Дякую за підручник,
    Але я не розумію, як запитання та відповіді додаються до бази даних.
    За допомогою кнопки додавання.
    Дякую за все.