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:
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}}}}
Vaatame, kuidas see välja näeb:
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.
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.
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 ...)
Suurepärane postitussari, aitäh panuse eest.
Täname õpetuse eest,
Aga ma ei saa aru, kuidas küsimused ja vastused andmebaasi lisatakse.
Nupuga Lisa.
Aitäh kõige eest.