Indekso
Krei programon por Ubuntu Touch
Tria parto de ĉi tiu poŝta serio (unua parto, dua parto) kie ni konstruas aplikaĵon al ubuntu Touch aŭ por la sama ubuntu surtabla. Mi aldonos parton, kiu okazis al mi en la antaŭa afiŝo, kaj tio estas, ke kvankam ni pliigis la variablojn de la fiaskoj, trafoj kaj punktoj, tiam ili ne estis montritaj sur la ekrano, tio estas ĉar ni ne ŝanĝis la tekstan econ de la Etikedoj:
Etikedo {id: malsukcesoj text: "Malsukcesoj:" + nfaults koloro: "ruĝa"} Etikedo {id: hits text: "hits:" + born} Label {id: points text: "Punktoj:" + npoints fontSize: "medium "}
Daŭrigo de la ludlogiko
Tempo
Nu, kiel ni jam scias, la progressBar montras la tempon, kiun ni havas por respondi demandon. Por administri la tempon ni uzos Tempigilon, la tempigilo estas elemento ripetata je intervalo de x milisekundoj, ĉi-kaze ĉiun intervalon ni diros al ĝi pliigi la progreson de la ProgressBar; Sed antaŭ ol mi rigardas, ĉu ĝi aŭ ne atingis la finon de la tempo, se ĝi atingos la finon, ni devas subtrahi vivon.
Vi povas vidi kodlinion, kiun ni ankoraŭ ne efektivigis (PopupUtils.open (dialogo)), ĉi tiu linio devas malfermi la finludan dialogon en kazo ni ne plu havos vivojn (3 cimoj forigitaj), poste en ĉi tiu afiŝo ni vidos kiel fari ĉi tiun dialogon.
Tempokodo (ni povas meti ĝin sub la 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 (dialogo)}} }}
Kiel ni povas vidi, en onTriggered ni metas la kodon, kiu pliigos la progresan stangon aldonante 1 unuon ĉiu 100 (intervalo) milli-sekundoj. Notu, ke ni aldonis du atributojn al la ProgressBar, minimumaValoro kaj maksimumaValoro, kiu, kiel vi povas vidi, estas la maksimuma valoro kaj la minimuma valoro.
Por komenci kaj haltigi la tempigilon:
simpletimer.start () simpletimer.stop ()
Ebloj (50%, Frosti kaj Sekva)
Unue ni kreu tri variablojn, kiuj kontrolas, ke la ebloj nur uzeblas unufoje:
posedaĵo int procento: 0 posedaĵo int kun: 0 posedaĵo int sekva: 0
50%
Butono {id: b50 teksto: "50%" onKlikita: {if (procento == 0) {var ĝusta = aDokumento.contents.questions [num] .correcta if (ĝusta == 1) {resp2.enabled = falsa resp3. enabled = false} else if (ĝusta == 2) {resp1.enabled = false resp4.enabled = false} else if (ĝusta == 3) {resp1.enabled = falsa resp4.enabled = false} else {resp2.enabled = falsa resp1.enabled = falsa} procento = 1}}
Kun enabled = false, kion ni faras estas meti la butonon tiel ke ĝi ne povas esti premita, tiel ke ni akiras la ĝustan respondon per Dokumento.kontentaj.demandoj [num]. Ĝusta kaj de ĉi tie depende de kiu ĝustas «ni eliminas »Du butonoj kiuj ne estas.
Senigi
Butono {id: bKon-teksto: "Frosti" surKlikita: {if (with == 0) simpletimer.stop () with = 1}}
Ĉi tiu estas unu el la facilaj, ni nur devas haltigi la tempigilon per simpletimer.stop (), jes, ni devas enŝalti ĝin denove (kaj agordi la progresobaron al 0) kiam ni trarigardas la demandon.
sekva
Butono {id: bSekva teksto: "Sekva" onKlikita: {if (sekva == 0) {num = num + 1 Logic.nextQuestion (num) sekva = 1}}}
Ni uzas la funkcion, kiun ni jam kreis, por pasigi la demandon (nextQuestion).
Dialogoj
Por fini la ludon ni uzos Dialogon, ĉu ĉar ni gajnis (ne plu estas demandoj), ĉu ĉar ni perdis (ni faris 3 erarojn), por uzi la dialogojn ni devas importi la modulon:
importi Ubuntu.Components.Popups 0.1
Ni kreos la dialogon, kiu diras al ni, ke ni perdis:
Komponanto {id: dialog Dialog {id: dialogue title: "Ludo finita!" text: "Vi perdis ĉiujn vivojn :(" Button {text: "Quit" onClicked: Qt.quit ()} Butono {text: "Rekomenci" koloro: UbuntuColors.orange onClicked: {num = 0; Logica.nextQuestion ( num) npunktoj = 0 naskiĝoj = 0 PopupUtils.close (dialogo)}}}}
Ni havas du butonojn, unu por fermi la aplikaĵon (Qt.quit ()) kaj alia por rekomenci la ludon. Ni pravalorizas la variablojn al 0 kaj fermas la dialogon.
Por malfermi la dialogon:
PopupUtils.open (dialogo)
Por fermi ĝin:
PopupUtils.close (dialogo)
Ni vidu la dialogon fine de la ludo:
Ni povas krei dialogon tute same ŝanĝante la identigilon kaj la tekston, kie ĝi diras, ke ni gajnis.
Projektante la demandon entute
Kiam ni projektas ĝin en GTK, ni kreas dialogon, sed ĉi-foje ni faros ĝin en Tab, ĉiuokaze ĝi havos la saman strukturon:
Kiel ni povas vidi, ni uzos Etikedon, Tekstareon por skribi la demandon, 4 Tekstokampo kaj 4 Ŝanĝilo; fine, Butono por aldoni la demandon. Ni nur rigardu la kodon:
importi QtQuick 2.0 importi Ubuntu.Components 0.1 Tab {title: i18n.tr ("+ Demandoj") Paĝo {id: pageAdd Column {anchors.top: pageAdd.top anchors.topMargin: 50 interspacigo: 15 larĝo: patro.width alto: parent.height - 50 Label {id: question text: "Aldoni demandon al la datumbazo:" 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} Vico {interspaco: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {lokokupiloTeksto: "Respondo 1" larĝo: 300 (...)} Ŝaltilo {kontrolita: falsa}} Vico {interspaco: 15 ankroj.horizontalCenter: patro.horizontala Centra Tekstokampo {lokokupiloText: "Respondo 2" larĝo: 300} Ŝaltilo {markita: falsa}} Vico {interspaco: 15 ankroj.horizontalaCentro: patro. horizontalCenter TextField {placeholderText: "Respondo 3" larĝo: 300} Ŝaltilo {kontrolita: falsa}} Vico {interspaco: 15 ankroj.horizontalCenter: patro.horizontalCenter TextField {placeholderText: "Respondo 4" larĝo: 300} Ŝaltilo {kontrolita: falsa}} Butono {teksto: "Aldoni +" anchors.horizontalCenter: patro.horizontalCenter larĝo: patro.width - 20}}}}
Ni vidu kiel ĝi aspektas:
Se ni nun testos la Ŝaltilojn, ni vidos, ke ni povas marki ĉiujn kiel la ĝustan demandon, kaj kompreneble nur unu povas esti, tial ni faros la jenon: ni povos doni identigilon al ĉiu ŝaltilo (ankaŭ al la tekstokampoj, ĉar ni devos akiri la enhavon por konservi ĝin en la datumbazo) laŭ via respondo, kaj kiam ni alklakos ĝin, ni metos ĉiujn aliajn en kontrolita = falsa reĝimo:
Vico {interspaco: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {id: res1 placeholderText: "Respondo 1" larĝo: 300} Ŝaltilo {id: sw1 kontrolita: falsa onKlikita: {if (sw1.checked == vera) {sw2. kontrolita = falsa sw3.checked = falsa sw4.checked = falsa}}}}
Se ni provos ĝin nun, ni vidos kiel ni povas marki nur unu.
4 komentoj, lasu la viajn
Tre bonaj kaj bone klarigitaj artikoloj.
Cetere, ĉu vi rekomendas iujn librojn, jutubajn kanalojn aŭ blogojn en la hispana por lerni kiel disvolviĝi en QML por Ubuntu.
Nu, en la hispana certe estas iuj lerniloj en YouTube, aŭ stranga blogo, sed la vero estas, ke estas malmulta materialo.
Mi vidas, ke vi konektas per nokia se ĝi estas simbio de la lasta, vi ankaŭ povas krei programojn per QML, fakte tiel mi lernis, jen la retejo por disvolvi nokia: http://developer.nokia.com/ (estas lerniloj, kompletaj projektoj ...)
Bonega afiŝa serio, dankon pro la enigo.
Dankon pro la lernilo,
Sed mi ne komprenas, kiel aldoniĝas demandoj kaj respondoj en la datumbazo.
Kun la aldona butono.
Dankon pro ĉio.