Krei programon por Ubuntu Touch [QML] - [Parto 3]

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:

ubuntu Touch

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}}}}
Se estas dubo pri la kodo, vi jam scias komenton

Ni vidu kiel ĝi aspektas:

Kapto de 2014-07-24 16:54:37

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.


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

4 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   vr_rv diris

    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.

    1.    lolbimbo diris

      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 ...)

  2.   Nestor diris

    Bonega afiŝa serio, dankon pro la enigo.

  3.   Martí diris

    Dankon pro la lernilo,
    Sed mi ne komprenas, kiel aldoniĝas demandoj kaj respondoj en la datumbazo.
    Kun la aldona butono.
    Dankon pro ĉio.