Rakenduse loomine Ubuntu Touchi jaoks [QML] - [3. osa]

Rakenduse loomine Ubuntu Touchile

Selle postitussarja kolmas osa (esimene osa, teine ​​osa), kuhu me ehitame rakendust Ubuntu Touch või sama eest Ubuntu töölauale. Lisan osa, millest eelmises postituses puudust tundsin, ja see on see, et kuigi suurendasime ebaõnnestumiste, tabamuste ja punktide muutujaid, siis neid ekraanil ei näidatud, sest me ei muutnud siltide teksti omadus:

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

Mänguloogika jätkamine

Tiempo

Noh, nagu me juba teame, näitab progressBar aega, mil peame küsimusele vastama. Taimeri kasutamise aja haldamiseks on taimer element, mida korratakse x millisekundi intervalliga, sel juhul ütleme igal intervallil, et see suurendaks ProgressBari edenemist; Kuid enne, kui ma vaatan, kas see on aegade lõppu jõudnud või mitte, peame selle lõppedes lahutama elu.

Näete koodirida, mida me pole veel juurutanud (PopupUtils.open (dialoog)), see rida on lõppmängu dialoogi avamine juhul, kui meil pole enam elusid (3 viga kõrvaldatud), hiljem näeme selles postituses, kuidas seda dialoogi teha.

Taimeri kood (saame selle panna ProgressBari alla):

       ProgressBar {id: time anchors.horizontalCenter: parent.horizontalCenter minimumValue: 0 maximumValue: 300} Taimer {id: simpletimer c: 100 kordus: tõeline töötamine: true onTriggered: {if (aeg.väärtus <aeg.maximumValue) aeg.väärtus + = 1.0 else {nfaults = nfaults + 1 if (nfaults <3) {num = num + 1 Logic.nextQuestion (num) time.value = time.minimumValue} else {simpletimer.stop () PopupUtils.open (dialoog)}} }}

Nagu näeme, panime onTriggeredis koodi, mis suurendab edenemisriba, lisades 1 ühiku iga 100 (intervall) millisekundit. Pange tähele, et oleme ProgressBarile lisanud kaks atribuuti minimumValue ja maximumValue, mis, nagu näete, on maksimaalne ja minimaalne väärtus.

Taimeri käivitamine ja peatamine:

simpletimer.start () simpletimer.stop ()

Valikud (50%, külmutamine ja järgmine)

Kõigepealt loome kolm muutujat, mis kontrollivad, et valikuid saab kasutada ainult üks kord:

    kinnisvara int protsent: 0 kinnisvara int koos: 0 kinnisvara int järgmine: 0

50%

Nupp {id: b50 text: "50%" onClicked: {if (protsenti == 0) {var correct = aDocument.contents.questions [num] .correcta if (õige == 1) {resp2.enabled = vale resp3. lubatud = vale} muu, kui (õige == 2) {resp1.enabled = vale resp4.enabled = false} else if (õige == 3) {resp1.enabled = vale resp4.enabled = false} else {resp2.enabled = vale resp1.enabled = false} protsent = 1}}

Kui väärtus on lubatud = vale, pannakse nupp nii, et seda ei saaks vajutada, nii et saame õige vastuse aDocument.contents.questions [num] abil. Parem ja siit olenevalt sellest, kumb on õige «me kõrvaldada »Kaks nuppu, mida pole.

Külmutada

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

See on üks lihtsamaid, me peame lihtsalt taimerit peatama simpletimer.stop () abil, jah, peame selle küsimuse läbimisel uuesti sisse lülitama (ja seadistama progressBar väärtuseks 0).

järgmine

                 Nupp {id: bJärgmine tekst: "Järgmine" onKlõpsatud: {if (järgmine == 0) {num = num + 1 Logica.nextQuestion (num) järgmine = 1}}}

Küsimuse edastamiseks kasutame juba loodud funktsiooni (nextQuestion).

Dialoogid

Mängu lõpetamiseks kasutame dialoogi kas sellepärast, et oleme võitnud (küsimusi pole enam) või kaotanud (oleme teinud 3 viga), et dialoogide kasutamiseks tuleb moodul importida:

importige Ubuntu. Komponendid. Hüpikud 0.1

Loome dialoogi, mis ütleb meile, et oleme kaotanud:

        Komponent {id: dialoogi dialoog {id: dialoogi pealkiri: "Mäng on läbi!" tekst: "Kaotasite kõik elud :(" Nupp {text: "Exit" onClicked: Qt.quit ()} Button {text: "Alusta otsast" color: UbuntuColors.orange onClicked: {num = 0; Logica.nextQuestion (num ) npoints = 0 sündi = 0 PopupUtils.close (dialoog)}}}}

Meil on kaks nuppu, üks rakenduse sulgemiseks (Qt.quit ()) ja teine ​​mängu alustamiseks. Algatame muutujate väärtuseks 0 ja sulgeme dialoogi.

Dialoogi avamiseks toimige järgmiselt.

PopupUtils.open (dialoog)

Selle sulgemiseks tehke järgmist.

PopupUtils.close (dialoog)

Vaatame mängu lõpus dialoogi:

Ubuntu Touch

Täpselt sama dialoogi saame luua, muutes identifikaatorit ja teksti seal, kus on kirjas, et oleme võitnud.

Küsimuste agregaadi kujundamine

Kui me selle sisse kujundame GTK, loome dialoogi, kuid seekord teeme seda vahelehel, igal juhul on see sama struktuur:

Nagu näeme, kasutame küsimuse kirjutamiseks Labeli, TextAread, 4 TextFieldi ja 4 Switchi; lõpuks küsimusele lisamiseks nupp. Vaatame lihtsalt koodi:

importige QtQuick 2.0, importige Ubuntu.Komponendid 0.1 Vahekaart {title: i18n.tr ("+ Küsimused") Lehekülg {id: pageAdd Column {ankrud.top: pageAdd.top ankrud.topMargin: 50 vahe: 15 laius: parent.width kõrgus: parent.height - 50 silt {id: question text: "Lisa küsimus andmebaasi:" anchors.horizontalCenter: parent.horizontalCenter fontSize: "large"} TextArea {width: parent.width - 20 height: units.gu (12 ) contentWidth: unit.gu (30) contentHeight: units.gu (60) anchors.horizontalCenter: parent.horizontalCenter} Rida {vahe: 15 ankrut.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Vastus 1" laius: 300} Lüliti {kontrollitud: vale}} Rida {vahe: 15 ankrut.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Vastus 2" laius: 300} Lüliti {kontrollitud: vale}} Rida {vahe: 15 ankrut.horizontalCenter: vanem. horizontalCenter TextField {placeholderText: "Vastus 3" laius: 300} Lüliti {kontrollitud: vale}} Rida {vahe: 15 ankrut.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Vastus 4" laius: 300} Lüliti {kontrollitud: vale}} nupp {text: "Add +" ankrud.horizontalCenter: parent.horizontalCenter laius: parent.width - 20}}}}
Kui kahtlete juba teadaolevas koodis, kommenteerige

Vaatame, kuidas see välja näeb:

Jäädvusta 2014-07-24 16:54:37

Kui testime nüüd lüliteid, näeme, et võime need kõik õigeks küsimuseks märkida ja loomulikult võib olla ainult üks, seetõttu teeme järgmist: suudame anda igale lülitile (ka tekstiväljad, kuna me peame selle sisu andmebaasi salvestamiseks hankima) vastavalt teie vastusele ja kui me sellel klõpsame, paneme kõik ülejäänud režiimi check = false:

             Rida {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. kontrollitud = false sw3.checked = false sw4.checked = false}}}}

Kui proovime seda kohe, näeme, kuidas saame märkida ainult ühe.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   vr_rv DIJO

    Väga head ja hästi selgitatud artiklid.
    muide, kas soovitate mõnda hispaaniakeelset raamatut, YouTube'i kanalit või blogi, et õppida Ubuntu jaoks QML-is arendama.

    1.    lolbimbo DIJO

      Noh, hispaania keeles on kindlasti mõned õpetused YouTube'is või veider blogis, kuid tõsi on see, et materjali on vähe.

      Ma näen, et ühendate Nokia kaudu, kui see on viimase sümbia, saate ka QML-iga rakendusi luua, tegelikult õppisin nii, siin on nokia arenduse veebisait: http://developer.nokia.com/ (seal on õpetusi, terviklikke projekte ...)

  2.   Nestor DIJO

    Suurepärane postitussari, aitäh panuse eest.

  3.   Martí DIJO

    Täname õpetuse eest,
    Aga ma ei saa aru, kuidas küsimused ja vastused andmebaasi lisatakse.
    Nupuga Lisa.
    Aitäh kõige eest.