为Ubuntu Touch [QML]创建应用-[第3部分]

为Ubuntu Touch创建应用

本系列文章的第三部分(第一部分, 第二部分)我们正在构建应用程序的位置 Ubuntu Touch 或相同 Ubuntu 桌面。 我将添加我在上一篇文章中遗漏的部分,那是尽管我们增加了失败,命中和得分的变量,但它们并未显示在屏幕上,这是因为我们没有更改标签的文本属性:

                标签{id:失败文本:“失败:” + nfaults颜色:“红色”}标签{id:命中文本:“命中:” +出生}标签{id:点文本:“点:” + npoints fontSize:“中等” “}

游戏逻辑的延续

时间

好吧,正如我们已经知道的,progressBar显示了我们必须回答问题的时间。 为了管理我们将使用Timer的时间,timer是一个以x毫秒为间隔重复的元素,在这种情况下,我们将告知每个间隔以增加ProgressBar的进度; 但是在我看它是否已经到了时间的尽头之前,万一它到达了尽头,我们必须减去寿命。

您会看到一行我们尚未实现的代码(PopupUtils.open(对话框)),此行是在我们没有更多生命(消除了3个错误)的情况下打开残局对话的方法,在本文的后面,我们将看到如何进行对话。

计时器代码(我们可以将其放在ProgressBar下面):

       ProgressBar {id:时间anchors.horizo​​ntalCenter:parent.horizo​​ntalCenter最小值:0最大值:300}计时器{id:simpletimer c:100重复:true运行:true on已触发:{if(time.value <time.maximumValue)time.value + = 1.0否则{nfaults = nfaults + 1 if(nfaults <3){num = num + 1 Logic.nextQuestion(num)time.value = time.minimumValue} else {simpletimer.stop()PopupUtils.open(dialog)}} }}

如我们所见,在onTriggered中,我们放置了将增加进度条的代码,每1(间隔)(毫秒)。 请注意,我们在ProgressBar中添加了两个属性,minimumValue和maximumValue,如您所见,它们是最大值和最小值。

要启动和停止计时器:

simpletimer.start()simpletimer.stop()

选项(50%,冻结和下一步)

首先创建三个变量,这些变量控制选项只能使用一次:

    属性int百分比:0属性int:0属性int下一个:0

50%

按钮{id:b50文本:“ 50%” onClicked:{if(percent == 0){varcorrect = aDocument.contents.questions [num] .correcta if(correct == 1){resp2.enabled = false resp3。 enabled = false}否则,如果(正确== 2){resp1.enabled =假resp4.enabled =假}否则,如果(正确== 3){resp1.enabled =假resp4.enabled =假} else {resp2.enabled = false resp1.enabled = false}百分比= 1}}

启用= false时,我们要做的就是放下按钮,使其无法被按下,这样我们就可以通过aDocument.contents.questions [num]获得正确的答案。消除»两个不是的按钮。

冻结

                按钮{id:bCon文本:“冻结” onClicked:{if(使用== 0)simpletimer.stop()使用= 1}}

这是简单的方法之一,我们只需要使用simpletimer.stop()停止计时器,是的,当我们处理问题时,必须再次将其打开(并将progressBar设置为0)。

下一页

                 按钮{id:b下一个文本:“下一个” onClicked:{if(next == 0){num = num + 1 Logic.nextQuestion(num)next = 1}}}

我们使用已经创建的函数来传递问题(nextQuestion)。

对话对话

要结束游戏,我们将使用对话框,要么是因为我们赢了(没有其他问题),要么是因为我们输了(我们犯了3个错误),要使用对话框,我们必须导入模块:

导入Ubuntu.Components.Popups 0.1

我们将创建一个对话框,告诉我们我们已经丢失了:

        组件{id:对话框对话框{id:对话框标题:“游戏结束!” 文本:“您失去了所有生命:(”按钮{文本:“退出” onClicked:Qt.quit()}按钮{文本:“重新开始”颜色:UbuntuColors.orange onClicked:{num = 0; Logica.nextQuestion(num )npoints = 0出生= 0 PopupUtils.close(对话)}}}}

我们有两个按钮,一个用于关闭应用程序(Qt.quit()),另一个用于重新开始游戏。 我们将变量初始化为0,然后关闭对话框。

要打开对话框:

PopupUtils.open(对话框)

要关闭它:

PopupUtils.close(对话)

让我们看看游戏结束时的对话:

Ubuntu Touch

我们可以通过更改标识符和表示获胜的文本来创建完全相同的对话框。

设计问题汇总

当我们设计它 GTK,我们创建了一个对话框,但是这次我们将在Tab中进行操作,无论如何它将具有相同的结构:

如我们所见,我们将使用Label,TextArea来写问题,4 TextField和4 Switch; 最后,添加一个按钮。 让我们看一下代码:

导入QtQuick 2.0导入Ubuntu.Components 0.1标签{title:i18n.tr(“ + Questions”)页面{id:pageAdd列{anchors.top:pageAdd.top anchors.topMargin:50间距:15宽度:parent.width高度: parent.height-50标签{id:问题文本:“向数据库添加问题:” anchors.horizo​​ntalCenter:parent.horizo​​ntalCenter fontSize:“大”} TextArea {width:parent.width-20 height:units.gu(12 )contentWidth:units.gu(30)contentHeight:units.gu(60)anchors.horizo​​ntalCenter:parent.horizo​​ntalCenter}行{spacing:15 anchors.horizo​​ntalCenter:parent.horizo​​ntalCenter TextField {placeholderText:“响应1”,宽度:300}切换{checked:false}}行{spacing:15 anchors.horizo​​ntalCenter:parent.horizo​​ntalCenter TextField {placeholderText:“ Response 2” width:300}切换{checked:false}}行{spacing:15 anchors.horizo​​ntalCenter:parent。 horizo​​ntalCenter TextField {placeholderText:“响应3”,宽度:300}切换{checked:false}}行{spacing:15 anchors.horizo​​ntalCenter:parent.horizo​​ntalCenter TextField {placeholderText:“ Response 4”,宽度:300}开关{已选中:false}}按钮{文本:“添加+” anchors.horizo​​ntalCenter:parent.horizo​​ntalCenter宽度:parent.width-20}}}}
如果对代码有任何疑问,您已经知道注释

让我们看看它的外观:

从2014-07-24 16:54:37捕获

如果现在测试交换机,我们将看到我们可以将它们全部标记为正确的问题,自然只有一个可以被标记,因此我们将执行以下操作:我们将能够为每个交换机(以及到交换机)提供标识符。文本字段,因为我们将不得不根据您的答案获取内容以将其保存到数据库中,当我们单击它时,我们会将所有其他内容置于check = false模式:

             行{spacing:15 anchors.horizo​​ntalCenter:parent.horizo​​ntalCenter TextField {id:res1 placeholderText:“响应1”宽度:300}开关{id:sw1已选中:false onClicked:{if(sw1.checked == true){sw2。检查=假sw3.checked =假sw4.checked =假}}}}

如果现在尝试,我们将看到我们只能标记一个。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   虚拟机

    很好,而且解释清楚的文章。
    顺便说一句,您是否推荐一些西班牙语的书籍,YouTube频道或博客,以学习如何在适用于Ubuntu的QML中进行开发。

    1.    洛宾博

      好吧,用西班牙语肯定会在YouTube或奇怪的博客上有一些教程,但事实是材料很少。

      我看到您通过nokia进行连接(如果它是上一个的Symbian),您也可以使用QML创建应用程序,实际上这是我所学到的,这是nokia开发网站: http://developer.nokia.com/ (有教程,完整的项目...)

  2.   内斯特

    优秀的帖子系列,感谢您的投入。

  3.   马蒂

    感谢您的教程,
    但是我不明白如何将问题和答案添加到数据库中。
    使用添加按钮。
    感谢一切。