Ubuntu Touch үчүн колдонмо түзүү [QML] - [3-бөлүк]

Ubuntu Touch үчүн колдонмо түзүү

Ушул посттун үчүнчү бөлүгү (бөлүк, экинчи бөлүм) биз тиркеме куруп жаткан жерибиз Ubuntu Touch же ошол эле үчүн Ubuntu иш такта. Мурунку постто башымдан өткөн бир бөлүктү кошом, башкача айтканда, биз мүчүлүштүктөрдүн, хиттердин жана упайлардын өзгөрмөлөрүн көбөйткөнүбүз менен, алар экранда көрүнбөй калды, себеби биз өзгөрбөдүк Этикеткалардын тексттик касиети:

                Label {id: failures text: "Failures:" + nfaults color: "red"} Label {id: hits text: "hits:" + born} Label {id: points text: "Points:" + npoints fontSize: "medium "}

Оюн логикасынын уландысы

убакыт

Ооба, буга чейин белгилүү болгондой, progressBar суроого жооп беришибиз керек болгон убакытты көрсөтөт. Таймерди колдоно турган убакытты башкаруу үчүн, таймер х миллисекунд аралыгында кайталанган элемент болуп саналат, бул учурда ар бир интервал биз ага прогресстин барынын өсүшүн айтып беребиз; Бирок акыр заманга жеттиби же жетпедиби, акырга жетсе, анда бир жашоону алып салыш керек.

Сиз биз көрө элек коддун сабын көрө аласыз (PopupUtils.open (диалог)), бул сызык, эгерде бизде жашоо болбосо (3 ката жок кылынды), анда акыркы оюн диалогун ачуу керек, кийинчерээк бул постто ушул диалогду кантип жасоону көрөбүз.

Таймер коду (биз аны ProgressBarдун астына койсок болот):

       ProgressBar {id: time anchors.horizontalCenter: parent.horizontalCenter minimumValue: 0 maximumValue: 300} Таймер {id: simpletimer c: 100 кайталоо: чыныгы чуркоо: 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%, Тоңдуруу жана Кийинки)

Алгач, параметрлерди бир жолу гана колдонууга боло тургандыгын көзөмөлдөгөн үч өзгөрмө түзөлү:

    property int пайыз: 0 property int менен: 0 property int кийинки: 0

50%

Баскыч {id: b50 текст: "50%" onClicked: {if (пайыз == 0) {var correct = aDocument.contents.questions [num] .correcta if (correct == 1) {resp2.enabled = false resp3. Enabled = false} else if (correct == 2) {resp1.enabled = false resp4.enabled = false} else if if (correct == 3) {resp1.enabled = false resp4.enabled = false} else {resp2.enabled = false resp1.enabled = false} пайыз = 1}}

Enabled = false дегенди басканда, баскыч басылбай тургандай кылып, туура жоопту aDocument.contents.questions [num] менен алабыз. Туура жана ушул жерден кайсынысы туура экендигине байланыштуу «биз жок кылуу »Эки баскыч жок.

Freeze

                Button {id: bCon text: "Freeze" onClicked: {if (with == 0) simpletimer.stop () with = 1}}

Бул оңой болгондордун бири, биз жөн гана таймерди simpletimer.stop () менен токтотушубуз керек, ооба, аны кайра күйгүзүшүбүз керек (жана progressBarди 0 кылып коюу керек).

кийинки

                 Баскыч {id: bNext text: "Next" onClicked: {if (next == 0) {num = num + 1 Logic.nextQuestion (num) next = 1}}}

Суроону берүү үчүн мурунтан эле түзүлгөн функцияны колдонобуз (nextQuestion).

Диалогдор

Оюнду бүтүрүү үчүн биз диалогду колдонобуз, анткени биз жеңишке жетиштик (башка суроолор жок) же утулуп калгандыктан (3 ката кетирдик), диалогду колдонуу үчүн модулду импорттошубуз керек:

импорттоо Ubuntu.Components.Popups 0.1

Биз жоготконубузду билдирүүчү диалог түзөбүз:

        Компонент {id: диалог диалогу {id: диалогдун аталышы: "Оюн бүттү!" текст: "Сиз бардык адамдардын өмүрүн жоготтуңуз :(" Баскыч {текст: "Чыгуу" onClicked: Qt.quit ()} Баскыч {текст: "Кайра баштоо" түс: UbuntuColors.orange onClicked: {num = 0; Logica.nextQuestion (num ) npoints = 0 төрөт = 0 PopupUtils.close (диалог)}}}}

Бизде эки баскыч бар, бири тиркемени жабуу үчүн (Qt.quit ()), экинчиси оюнду баштоо үчүн. 0 өзгөрмөлөрүн баштап, диалогду жабабыз.

Диалогду ачуу үчүн:

PopupUtils.open (диалог)

Аны жабуу үчүн:

PopupUtils.close (диалог)

Оюндун аягындагы диалогду көрөбүз:

Ubuntu Touch

Идентификаторду жана анда биз жеңдик деген текстти өзгөртүү менен диалогду дал ошондой түзө алабыз.

Суроо топтомун иштеп чыгуу

Биз аны иштеп жатканда GTK, биз диалог түзөбүз, бирок бул жолу Табулатурада жасайбыз, бирок баары бирдей структурага ээ болот:

Көрүнүп тургандай, биз суроо жазуу үчүн Label, TextArea колдонобуз, 4 TextField жана 4 Switch; акыры, суроону кошуу үчүн Баскыч. Кодду карап көрөлү:

import QtQuick 2.0 import Ubuntu.Components 0.1 Tab {title: i18n.tr ("+ Questions") Page {id: pageAdd Column {anchors.top: pageAdd.top anchors.topMargin: 50 spacing: 15 width: parent.width height: parent.height - 50 Label {id: question text: "Маалымат базасына суроо кошуу:" 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} Row {spacing: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Response 1" width: 300} Switch {check: false}} Row {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 width: parent.width - 20}}}}
Эгерде сиз код жөнүндө күмөн санасаңыз, анда сиз буга чейин комментарийди билесиз

Келгиле, анын кандайча көрүнөрүн карап көрөлү:

2014-07-24 16:54:37 чейин тартып алуу

Эгерде биз азыр которуштургучтарды сынап көрсөк, анда алардын бардыгын туура суроо катары белгилей алабыз, албетте, бир гана суроо болушу мүмкүн, ошондуктан биз төмөнкүнү жасайбыз: ар бир которуштуруучуга идентификатор бере алабыз (ошондой эле тексттик талаалар, анткени аны маалымат базасына сактоо үчүн мазмунду алышыбыз керек) сиздин жообуңузга ылайык, жана аны чыкылдатканда башкаларын check = false режимине коёбуз:

             Row {spacing: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {id: res1 placeholderText: "Response 1" width: 300} Switch {id: sw1 check: false onClicked: {if (sw1.checked == true) {sw2. Check = false sw3.checked = false sw4.checked = false}}}}

Азыр байкап көрсөк, бирөөнү гана белгилей алабыз.


Макаланын мазмуну биздин принциптерге карманат редакциялык этика. Ката жөнүндө кабарлоо үчүн чыкылдатыңыз бул жерде.

4 комментарий, өзүңүздүкүн калтырыңыз

Комментарий калтырыңыз

Сиздин электрондук почта дареги жарыяланбайт. Милдеттүү талаалар менен белгиленет *

*

*

  1. Маалыматтар үчүн жооптуу: Мигель Анхель Гатан
  2. Маалыматтын максаты: СПАМды көзөмөлдөө, комментарийлерди башкаруу.
  3. Мыйзамдуулук: Сиздин макулдугуңуз
  4. Маалыматтарды берүү: Маалыматтар үчүнчү жактарга юридикалык милдеттенмелерден тышкары билдирилбейт.
  5. Маалыматтарды сактоо: Occentus Networks (ЕС) тарабынан уюштурулган маалыматтар базасы
  6. Укуктар: Каалаган убакта маалыматыңызды чектеп, калыбына келтирип жана жок кыла аласыз.

  1.   vr_rv ал мындай деди:

    Абдан жакшы жана жакшы түшүндүрүлгөн макалалар.
    Баса, Ubuntu үчүн QMLде кантип өнүгүүнү үйрөнүү үчүн испан тилиндеги айрым китептерди, YouTube каналдарын же Блогдорду сунуштайсызбы.

    1.    лолбимбо ал мындай деди:

      Испанияда, албетте, YouTubeда же кызыктай блогдо бир нече окуу куралдары бар, бирок чындыгында материал аз.

      Сиздин Nokia аркылуу туташканыңызды байкайм, эгерде ал акыркы символикасы болсо, анда сиз QML менен тиркемелерди түзө аласыз, чындыгында мен кантип үйрөнгөм, бул жерде Nokia иштеп чыгуу сайты: http://developer.nokia.com/ (окуу куралдары, толук долбоорлор бар ...)

  2.   Нестор ал мындай деди:

    Сонун пост сериясы, киргизгениңиз үчүн рахмат.

  3.   Martí ал мындай деди:

    Окуу куралы үчүн рахмат,
    Бирок маалымат базасына суроолор жана жооптор кандайча кошулганын түшүнбөйм.
    Кошуу баскычы менен.
    Баарына рахмат.