Lietotnes izveide Ubuntu Touch [QML] - [3. daļa]

Lietotnes izveidošana operētājsistēmai Ubuntu Touch

Šīs ziņas sērijas trešā daļa (Daļa, otrā daļa), kur mēs veidojam lietojumprogrammu Ubuntu Touch vai par to pašu Ubuntu darbvirsma. Es pievienošu daļu, kas ar mani notika iepriekšējā ierakstā, un tas ir tas, ka, lai arī mēs palielinājām kļūmju, trāpījumu un punktu mainīgos, tie tomēr netika rādīti ekrānā, tas ir tāpēc, ka mēs nemainījām etiķešu teksta rekvizītu:

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

Spēles loģikas turpinājums

Laiks

Nu, kā mēs jau zinām, progressBar parāda laiku, kas mums jāatbild uz jautājumu. Lai pārvaldītu laiku, kurā mēs izmantosim Taimeri, taimeris ir elements, kas tiek atkārtots ar x milisekunžu intervālu, šajā gadījumā katrs intervāls mums liks palielināt ProgressBar progresu; Bet pirms es aplūkoju, vai tas ir sasniedzis laika beigas, nē, ja tas ir beidzies, mums ir jāatņem dzīve.

Varat redzēt koda rindiņu, kuru mēs vēl neesam ieviesuši (PopupUtils.open (dialoglodziņš)), šai līnijai ir jāatver beigu spēles dialogs, ja mums vairs nav dzīvību (novērstas 3 kļūdas), vēlāk šajā ierakstā mēs redzēsim, kā veikt šo dialogu.

Taimera kods (mēs varam to ievietot zem ProgressBar):

       ProgressBar {id: time anchors.horizontalCenter: parent.horizontalCenter minimumValue: 0 maximumValue: 300} Taimeris {id: simpletimer c: 100 atkārtojums: 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 (dialoglodziņš)}} }}

Kā redzam, vietnē onTriggered mēs ievietojām kodu, kas palielinās progresa joslu, pievienojot 1 vienību ik pēc 100 (intervāls) mili sekundes. Ņemiet vērā, ka esam pievienojuši divus atribūtus joslai Progress, minimumValue un maximumValue, kas, kā redzat, ir maksimālā vērtība un minimālā vērtība.

Lai palaistu un apturētu taimeri:

simpletimer.start () simpletimer.stop ()

Opcijas (50%, iesaldēšana un nākamā)

Vispirms izveidosim trīs mainīgos, kas kontrolē, ka opcijas var izmantot tikai vienu reizi:

    īpašums int procenti: 0 īpašums int ar: 0 īpašums int nākamais: 0

50%

Poga {id: b50 text: "50%" onNoklikšķināts: {if (procenti == 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 (correct == 3) {resp1.enabled = false resp4.enabled = false} else {resp2.enabled = false resp1.enabled = false} procenti = 1}}

Ja iespējots = false, mēs darām pogu, lai to nevarētu nospiest, tādējādi iegūstot pareizo atbildi ar aDocument.contents.questions [num]. Pareizi un no šejienes atkarībā no tā, kura ir pareiza »Divas pogas, kas nav.

Iesaldēt

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

Šis ir viens no vienkāršākajiem, mums vienkārši jāpārtrauc taimeris ar simpletimer.stop (), jā, mums tas atkal jāieslēdz (un jānosaka progressBar uz 0), kad mēs izskatām jautājumu.

nākamais

                 Poga {id: bNākamais teksts: "Next" onNoklikšķināts: {if (next == 0) {num = num + 1 Logic.nextQuestion (num) next = 1}}}

Mēs izmantojam jau izveidoto funkciju, lai atbildētu uz jautājumu (nextQuestion).

Dialogi

Lai beigtu spēli, mēs izmantosim dialogu vai nu tāpēc, ka esam uzvarējuši (jautājumu vairs nav), vai tāpēc, ka esam zaudējuši (mēs esam pieļāvuši 3 kļūdas), lai izmantotu dialoglodziņus, mums ir jāimportē modulis:

importēt Ubuntu. Komponenti. Popupi 0.1

Mēs izveidosim dialogu, kas mums paziņo, ka esam zaudējuši:

        Komponents {id: dialog Dialog {id: dialog title: "Spēle beigusies!" teksts: "Jūs zaudējāt visas dzīvības :(" Poga {text: "Quit" onClicked: Qt.quit ()} Button {text: "Start over" color: UbuntuColors.orange onClicked: {num = 0; Logica.nextQuestion ( num) npoints = 0 dzimušo = 0 PopupUtils.close (dialogs)}}}}

Mums ir divas pogas, viena, lai aizvērtu programmu (Qt.quit ()), un otra, lai sāktu spēli no jauna. Mēs inicializējam mainīgos uz 0 un aizveram dialoglodziņu.

Lai atvērtu dialogu:

PopupUtils.open (dialoglodziņš)

Lai to aizvērtu:

PopupUtils.close (dialogs)

Apskatīsim dialogu spēles beigās:

Ubuntu Touch

Mēs varam izveidot tieši tādu pašu dialogu, mainot identifikatoru un tekstu, kur teikts, ka esam uzvarējuši.

Jautājumu kopuma noformēšana

Kad mēs to projektējam GTK, mēs izveidojam dialogu, bet šoreiz to darīsim cilnē, vienalga, tam būs tāda pati struktūra:

Kā redzam, jautājuma rakstīšanai mēs izmantosim etiķeti, TextArea, 4 TextField un 4 Switch; visbeidzot, Poga, lai pievienotu jautājumu. Apskatīsim tikai kodu:

importēt QtQuick 2.0 importēt Ubuntu.Components 0.1 Tab {title: i18n.tr ("+ Jautājumi") Lapa {id: pageAdd Column {anchors.top: pageAdd.top anchors.topMargin: 50 atstarpes: 15 width: parent.width height: parent.height - 50 Label {id: question text: "Jautājuma pievienošana datu bāzei:" 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} Rinda {atstarpes: 15 enkuri.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "1. atbilde" platums: 300} Pārslēgt {pārbaudīts: nepatiess}} Rinda {atstarpes: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Response 2" width: 300} Switch {check: false}} Rinda {atstarpes: 15 anchors.horizontalCenter: parent. horizontalCenter TextField {placeholderText: "Atbildes 3" platums: 300} Slēdzis {pārbaudīts: nepatiesa}} Rinda {atstarpes: 15 enkuri.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Atbilde 4" platums: 300} Pārslēgt {pārbaudīts: nepatiesa}} Poga {text: "Add +" enkuri.horizontalCenter: parent.horizontalCenter width: parent.width - 20}}}}
Ja rodas šaubas par kodu, kuru jūs jau zināt, komentējiet

Apskatīsim, kā tas izskatās:

Uzņemiet no 2014. gada 07. septembra 24:16:54

Ja mēs tagad pārbaudīsim slēdžus, mēs redzēsim, ka mēs varam tos visus atzīmēt kā pareizo jautājumu, un, protams, var būt tikai viens, tāpēc mēs rīkosimies šādi: mēs varēsim katram identifikatoram piešķirt identifikatoru (arī tekstlaukiem, jo ​​mums būs jāiegūst saturs, lai to saglabātu datu bāzē) atbilstoši jūsu atbildei, un, noklikšķinot uz tā, mēs visus pārējos iestatīsim pārbaudītā = nepatiesa režīmā:

             Rinda {atstarpes: 15 enkuri.horizontalCenter: parent.horizontalCenter TextField {id: res1 placeholderText: "Response 1" width: 300} Switch {id: sw1 pārbaudīts: false onClicked: {if (sw1.checked == true) {sw2. pārbaudīts = false sw3.checked = false sw4.checked = false =}}}}

Ja mēs to izmēģināsim tagad, mēs redzēsim, kā mēs varam atzīmēt tikai vienu.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   vr_rv teica

    Ļoti labi un labi izskaidroti raksti.
    starp citu, vai jūs iesakāt dažas grāmatas, YouTube kanālus vai emuārus, kas ir spāņu valodā, lai uzzinātu, kā attīstīt QML Ubuntu.

    1.    lolbimbo teica

      Nu, spāņu valodā noteikti ir dažas apmācības vietnē YouTube vai nepāra emuārā, taču patiesība ir tāda, ka materiālu ir maz.

      Es redzu, ka jūs izveidojat savienojumu, izmantojot nokia, ja tā ir pēdējās simbija, jūs varat arī izveidot lietojumprogrammas ar QML, patiesībā es to uzzināju, šeit ir nokia izstrādes vietne: http://developer.nokia.com/ (ir apmācības, pabeigti projekti ...)

  2.   Nestor teica

    Lieliska ziņu sērija, paldies par ieguldījumu.

  3.   Martí teica

    Paldies par apmācību,
    Bet es nesaprotu, kā jautājumi un atbildes tiek pievienotas datu bāzē.
    Ar pogu Pievienot.
    Paldies par visu.