- 浏览: 46226 次
- 性别:
- 来自: 太原
文章分类
最新评论
-
hyxingzi:
学习了
javaScript中firstChild IE与火狐方法的区别与兼容 -
jixuan1989:
赞! 请问楼主 “工作中使用过的struts2-jquery ...
struts2-jquery-plugin使用手册,自己写的 -
MR3CHEN:
我在使用grid的时候,出现中文乱码啊。。。就是传值到后台的时 ...
struts2-jquery-plugin使用手册,自己写的
准备工作:下载实例图片
设置组件
使用组件设计为QuizMe创建接口。你什么时候完成,它应该类似于下面所示的屏幕快照(也有更详细的说明快照)。
要创建这个接口,首先加载图片下载到你的项目。点击Add按钮,并选择一个地区的媒体下载的文件(例如,Larsenberra.jpg)。然后做同样的其他三个图像。 接下来,创建以下组件从调色板中通过拖拽到查看器。
Component Type | Palette Group | What you'll name it | Purpose of Component |
Image | Basic | Image1 | The picture part of the question |
Label | Basic | QuestionLabel | Displays the current question |
HorizontalArrangement | Screen Arrangement | HorizontalArrangement1 | Organizes the AnswerPrompt and Text |
Label | Basic | AnswerPromptLabel | Text prompting for an anwer |
TextBox | Basic | AnswerText | User will enter answer here. |
Label | Basic | RightWrongLabel | Correct/Incorrect is displayed here. |
HorizontalArrangement | Screen Arrangement | HorizontalArrangement2 | Organizes the AnswerButton and NextButton |
Button | Basic | AnswerButton | User clicks to submit an answer |
Button | Basic | NextButton | User clicks to proceed to the next answer |
设置组件的属性如下所述:
Component | Action |
Image1 | Set its Picture property to "Larsenberra.jpg". This is the first picture that should appear. |
QuestionLabel | Change Text property to "question" |
AnswerPromptLabel | Change Text property to "Enter Answer:". On the Viewer screen, move this label intoHorizontalArrangement1. |
AnswerText | Change Hint to "please enter an answer". On the Viewer screen, move AnswerText intoHorizontalArrangement1. |
AnswerButton | Change Text property to "Submit". On the Viewer, move the button intoHorizontalArrangment2. |
NextButton | Change Text property to "Next". Move the button into HorizontalArrangement2. |
RightWrongLabel | Change Text property to "correct/incorrect". |
添加到组件的行为
打开块编辑器来添加行为的应用。首先,您将定义两个列表变量,QuestionList举行的问题列表,AnswerList持有相应的答案列表。 定义两个变量列表,您需要以下内容块:
Block Type | Drawer | Purpose |
def variable | Definitions | Defines the QuestionList variable (rename it) |
def variable | Definitions | Defines the AnswerList variable (rename it) |
make a list | Lists | Used to insert the items of the QuestionList |
text (3 of them) | Text | The actual questions |
make a list | Lists | Used to insert the items of the AnswerList |
text (3 of them) | Text | The actual answers |
您创建全局变量通过拖拽在def可变块从定义抽屉,双击默认的名字“变量”来改变它的名字。def的可变块有一个位置变量的初始值。变量可以代表一个数字或文字,甚至是一个列表,您可以插入列个清单块到变量定义。
这个街区应该看起来像这样:
定义隐藏的索引变量
每当用户单击NextButton继续通过测验,这个应用程序需要记住,问题就在。在程序设计中,记住一些东西,您定义一个新的变量。在这种情况下,应用程序需要记住当前问题的数字——该指数为QuestionList列表。
要创建变量currentQuestionIndex,您需要以下内容块:
Block Type | Drawer | Purpose |
def variable | Definitions | Defines the currentQuestionIndex variable (rename it) |
number (1) | Math | Set the initial value of currentQuestionIndex to 1 |
The blocks should look like this:
显示第一个问题
首先,你会忽略这些答案,只是工作行为序列通过问题。期望的行为如下:当应用程序启动时,第一个问题应该出现在标签QuestionLabel命名。当用户单击NextButton,第二个问题应该出现。当用户单击再次,第三个应该出现。当最后一个问题是达成,单击NextButton应该导致第一个问题再次出现在theQuestionLabel。
与应用程序发明家,你选择特定项的列表中选择列表项的块。块要求您指定列表和一个指数——一个列表中的位置。如果一个列表有三个项目,索引1、2和3都是有效的。
对于QuizMe,当应用程序启动时,应用程序应该选择列表中的第一个问题,在QuestionLabelcomponent显示它。
对于这个应用程序初始化行为,您需要以下内容块:
Block Type | Drawer | Purpose |
Screen1.Initialize | Screen1 | When the app begins, this event-handler is triggered. |
set QuestionLabel.Text to | QuestionLabel | Need to put the first question in QuestionLabel |
select list item | Lists | Need to select the first question from QuestionLabel |
global QuestionList | My Definitions | The list to select from |
number (1) | Math | Select the first question by using an index of 1 |
这个街区应该看起来像这样:
块的工作如何
Screen1的。初始化事件时触发应用程序开始。第一项QuestionList的变量选择和放置在QuestionLabel.Text。因此,当应用程序开始,用户将看到的第一个问题。
测试这个行为。单击重启手机应用程序(或连接的电话如果没有连接)。什么东西出现在电话吗?如果你创建了QuestionList如上所述,QuestionList的第一项,“谁投一个完美的游戏世界系列吗?“,应该出现在QuestionLabel。
遍历问题
现在项目NextButton的行为。你已经定义了currentQuestionIndex记住用户的问题上。当NextButton被单击时,应用程序需要增加这个变量,例如,改变它从1到2个或2到3等等,然后使用结果值来选择新“当前”的问题。对于这种行为,您需要以下内容块:
Block Type | Drawer | Purpose |
NextButton.Click | NextButton | When user clicks Next, this event-handler is triggered. |
set currentQuestionIndex to | My Definitions | Need to put the first question in QuestionLabel |
+ block | Math | Used to increment currentQuestionIndex |
global currentQuestionIndex | My Definitions | New value will be old value + 1 |
number (1) | Math | For the + 1 |
set QuestionLabel.Text to | QuestionLabel | Need to display the next question here |
select list item | Lists | Need to select the first question from QuestionList |
global QuestionList | My Definitions | Plug into list slot of call select list item |
global currentQuestionIndex | My Definitions | Plug into index slot of call select list item, we want nth item |
这个拼图应该看起来像这样:
块的工作如何
第一行的拼图currentQuestionIndex增加变量。如果currentQuestionIndex有一个1,它就变成了2。如果它有一个2,它就变成了3,等等。一旦currentQuestionIndex变量已经改变,应用程序使用它来选择“当前”的问题。
回想一下,在Screen.Initialize事件句柄,这个应用程序选择第一个问题来显示:
当NextButton被单击时,应用程序不选择列表中的第一项,或者第二或者第三次,它选择这currentQuestionIndex项目.
这个街区是在从右到左的方式执行。这个应用程序首先评估指标参数的选择列表项,它是currentQuestionIndex的变量。这个数字是存储在currentQuestionIndex用作指数当选择列表项目执行。
当NextButton第一次点击,增加currentQuestionIndex块将从1到2,那么应用程序将从QuestionList选择第二个项目,“谁投第一场完全比赛2010 ?”。NextButton第二次点击,currentQuestionIndex会设置2到3,程序会选择列表中的第三问题,“谁投第一场完全比赛的现代吗?”
测试这个行为。测试NextButton的行为,看看这个应用程序是否正常工作为止。为了测试,扮演角色的用户并单击NextButton打电话。做手机显示的第二个问题,“谁投第一场完全比赛的2010吗?“它应该,和第三个问题应该出现当你点击NextButton再次。如果这是工作,拍拍自己的迅速恢复,然后继续。 尝试再次单击NextButton(第三次)。您应该看到一个错误:“试图获得第四项列表的长度为3”。这个应用程序有一个bug,你知道是什么问题?
问题是,它的应用程序总是增加currentQuestionIndex变量当NextButton点击。当currentQuestionIndex已经3和用户单击NextButton,这个应用程序更改currentQuestionIndex 3到4,然后调用选择列表项目获得currentQuestionIndex-th,或在这种情况下,第四项。因为只有三个项目在变量QuestionList,Android抱怨。 这个应用要做的是问一个问题——先检查条件——当NextButton被单击,并执行不同的块dependending在答案。问这个问题的一个方法是问,“是变量currentQuestionIndex已经3 ?“如果答案是肯定的,你应该设定currentQuestionIndex回到0,因此用户被送回到第一个问题。 您需要以下块:
Block Type | Drawer | Purpose |
if test then-do | Control | To ask if user is on last question |
= block | Math | to test if currentQuestionIndex is 3 |
global currentQuestionIndex | My Definitions | - |
number 3 | Math | 3 is number of items in the list |
set currentQuestionIndex to | My Definitions | set to 0 to go back to first question |
Number 0 | Math | set to 0 because next blocks will increment to 1 |
The modified NextButton.Click event-handler should look like this:
块的工作如何
当NextButton被单击时,应用程序首先检查是否有一个3 currentQuestionIndex在它。如果是这样,currentQuestionIndex是重新设置为0,这样当1添加到它下面的街区,这将是1和测验将循环回到显示第一个问题。注意,只有块嵌入在如果测试然后做块都依赖于条件——增量和QuestionLabel设置。文本块的执行在所有条件。
测试这个行为。因为变量如currentQuestionIndex是隐藏的,他们常常是在一个程序错误的来源。幸运的是,App Inventor提供了一种方法来做这样的隐藏变量在测试期间的透明。具体地说,App Inventor可以让你“看”如何改变一个变量的值作为一个应用的进展。在这个测试中,右键单击currentQuestionIndex def块在街区编辑器并选择观看。然后选择重启手机应用程序,然后将显示def块和一个手表盒显示的初始值currentQuestionIndex(这应该是1): 现在拿起电话并单击NextButton。第二个问题,“谁把最近的完美的游戏在大联盟吗?“应该出现在QuestionLabel打电话,像以前一样。在App Inventor屏幕,2应该出现在currentQuestionIndex记忆细胞: 当你再次单击,第三个问题应该出现在电话和3应该出现在记忆细胞。如果你再次单击,1应该出现在currentQuestionIndex和在电话上的第一个问题。
一个可维护的应用程序:使它容易修改的问题
接下来,您将修改应用程序以使它容易添加和删除元素的列表。你会重写块,因此,他们将继续工作,任何列表,而不只是一个恰好三个项目。首先,添加第四个问题的回答,AnswerList QuestionList和另一个。这个街区应该看起来像这样:
修改后的应用程序测试。单击NextButton好几次。你应该看到,第四个问题再也不会现身,无论有多少次你点击Next。
修改后的应用程序测试。单击NextButton好几次。你应该看到,第四个问题再也不会现身,无论有多少次你点击Next。
你可以改变数字3到4,这个应用程序将再次正常工作。这个解决方案的问题在于,每次修改问题和答案,你也要记得做这种改变。这种依赖关系在计算机程序往往会导致错误,特别是作为一个应用生长在复杂性。最好是设置程序,它将工作无论多少的问题存在。这种普遍性是更重要的,当你正在与列表动态变化,例如,一个测试应用程序,允许用户添加新的问题。 更好的解决方案是问这个问题在一个更普遍的方式。你真的想知道如果当前问题用户仍在——currentQuestionIndex的价值——是一样大QuestionList中项目的数量。如果程序问这个问题在这个更通用的方式,它将工作甚至当你添加到null
Block Type | Drawer | Purpose |
length of list | Lists | asks how many items are in QuestionList |
global QuestionList | My Definitions | put into list slot of length of list |
Your NextButton.Click event-handler should now appear as:
块的工作如何
如果现在的测试比较了currentQuestionIndex QuestionList的长度。所以,如果currentQuestionIndex有一个4,QuestionList的长度是4,那么currentQuestionIndex将被设置为0(然后1增量操作后在第一排块后,如果)。注意,因为块不再引用3或任何特定的大小,这种行为将工作不管列表项的多少。
测试修改后的行为。当你点击NextButton,并应用程序现在序列通过四个问题,移动到第一个后的第四种吗?
转换图像为每个问题
当前的应用程序显示了相同的图像,不管什么问题问。你可以改变这样一个图像用于修饰或说明每个问题出现在NextButton点击。早些时候,你增加了四个图片作为媒体项目。现在,您将创建一个列表,PictureList第三的名字,作为其项目的图像文件。和你theNextButton将修改。单击事件句柄来切换每个图片的时间。 首先,创建一个PictureList和初始化它的名称图像文件。确保名称是完全一样的文件的名称中被加载到媒体的项目。下面是这个块PictureList应该:
接下来,您需要修改NextButton。单击事件句柄,以便它修改图片根据用户仍在什么问题。如果你设置图像。图片财产到一个文件的名字的影像时,已经被加载,图像将会出现。NextButton修改。单击,您需要以下内容块:
Block Type | Drawer | Purpose |
set Image1.Picture to | Image1 | set this to change the picture |
select list item | Lists | need to select the picture corresponding to current question |
global PictureList | My Definitions | select a file name from this list |
global currentQuestionIndex | My Definitions | select the currentQuestionIndex-th item |
这是块如何应该:
块的工作如何
这个currentQuestionIndex作为索引QuestionList和currentQuestionIndex是1,这个应用程序选择第一个问题和第一个图像。当currentQuestionIndex是2,这个应用程序选择第二个问题和第二幅。当然这个计划取决于列表被同步,事实上他们是。例如,第一张图片,LarsenBerra。jpg,是一幅唐拉森,唐拉森是第一个问题的答案,“谁投一个完美的游戏世界系列吗?“测试修改后的行为。做一个不同的图像看起来每一次你点击NextButton吗?
评估答案
接下来,您将添加块报告用户是否已经回答了一个问题正确与否。用户输入答案,然后单击AnswerButton AnswerText。应用程序必须比较用户输入的答案“当前”问题,使用一个ifelse块来检查。这个RightWrongLabel应该修改报告是否答案是正确的。您需要以下块这种行为:
Block Type | Drawer | Purpose |
AnswerButton.Click | AnswerButton | the behavior is triggered when user clicks the AnswerButton |
ifelse | Control | if answer is correct, do one thing, else do another |
= block | Math | to ask if answer is correct |
AnswerText.Text | AnswerText | the user's answer is in this textbox |
select list item | Lists | to select the current answer from AnswerList |
global AnswerList | My Definitions | The list to select from |
global currentQuestionIndex | My Definitions | the question number (and answer number) the user is on |
set RightWrongLabel.Text to | RightWrongLabel | report the answer here |
text block "correct" | Text | if answer is right |
set RightWrongLabel.Text to | RightWrongLabel | report the answer here |
text block "incorrect" | Text | if answer is wrong |
The blocks should look like this:
块的工作如何
测试的ifelse写道,“是用户的答案(AnswerText.Text)等于currentQuestionIndex-th项目在theAnswerList吗?“如果currentQuestionIndex是1,该应用程序将比较用户的答案与第一项在AnswerList,”唐拉森”。如果currentQuestionIndex是2,该应用程序将比较用户的答案与列表中的第二个答案,”达拉斯布莱登”,等等。如果测试结果是积极的,然后做块的执行和RightWrongLabel设置为“正确!”。如果测试是假的,其他块的执行和RightWrongLabel设置为“不正确的”。
修改后的应用程序测试。尝试回答的问题之一。它应该报告你是否回答这个问题完全一样AnswerList中指定。试验与一个正确和错误的答案(因为文本相比,测试是大小写敏感)。
单击NextButton和回答第二个
Block Type | Drawer | Purpose |
set RightWrongLabel.Text to | RightWrongLabel | the label to blank out |
text (blank) | Text | When Next is clicked, erase old answer critique |
set AnswerText.Text to | AnswerText | the user's answer from previous question |
text (blank) | Text | When Next is clicked, erase old answer |
这个拼图应该看起来像这样:
块的工作如何
当NextButton点击,用户移动到下一个问题,所以前两行中的事件句柄清空RightWrongLabel和AnswerText。
测试这个行为。回答问题,并单击Submit,然后单击NextButton。做你以前的回答和应用批判消失?
最终计划
QuizMe! Final Version:
方案的最终版本应用程序通过选择包电话|条形码从组件设计菜单。当条码出现,使用条形码扫描仪,在你的手机下载和安装这个应用程序。
变化
一旦你得到一个测验工作,你可能想要探索一些变化。
例如,
而不是仅仅显示图像对于每个问题,试着声音剪辑或短视频。与声音,你可以把你的测试应用程序到一个名称,调优应用程序。
这个测试是非常严格的条件被接受为一个有效的回答。有许多方法来修改这个。一种方法是使用文本。包含块看看用户的答案是包含在实际的回答。另一种方法是提供多个回答每个问题,检查通过迭代(使用foreach)通过它们来看看任何匹配。
变换测验,所以这是多项选择题的答案列表需要
发表评论
-
用正则表达式和javascript对表单进行全面验证
2012-03-22 15:17 0代码:<!-- 使用时请将下面的javascrip ... -
正则表达式在JavaScript应用
2012-03-22 15:16 0-------------------------- ... -
正则表达式regular expression详述2
2012-03-22 15:14 0以下这些不是正则表 ... -
正则表达式regular expression详述(一)
2012-03-22 15:13 1099正则表达式是regular ex ... -
javascript正则表达式检验汇总
2012-03-22 15:12 931/****************************** ... -
JavaScript中的正则表达式汇总
2012-03-22 15:11 970正则表达式对象的属性及方法 预定义的正则表达式拥有 ... -
javascript 正则表达式
2012-03-22 15:09 0正则表达式是一个描述字符模式的对象。 JavaScrip ... -
正则表达式中的特殊字符
2012-03-22 15:07 1047字符 含意 \ 做为转意,即通常 ... -
SMIL 2.0 基础教程
2012-02-23 14:51 1057一、 简介 随着流技术的成熟和广泛的应用,其优点我们有了深深的 ... -
SMIL 2.0 基础教程
2012-02-23 14:35 0一、 简介 随着流技术的成熟和广泛的应用,其优点我们有了深深的 ... -
HTML5基础,第4部分:点睛之笔Canvas
2012-01-12 14:49 955原文地址:http://select. ... -
HTML5基础,第3部分:HTML5 API的威力
2012-01-12 14:43 986原文地址http://select.yee ... -
HTML5基础,第2部分:组织页面的输入
2012-01-12 14:38 1075HTML5反映了在网络上 ... -
HTML5基础,第1部分:初试锋芒
2012-01-12 14:24 902HTML5反映了在网络上和在云端实施业务的方式的巨大变化 ... -
巧用QQ空间动画制作网站欢迎Flash[转]
2011-12-30 17:20 1240巧用QQ空间动画制作网 ... -
利用apmserv搭建服务环境集成discuz+ecshop+phpcms完成企业综合平台
2011-12-29 17:37 2817第一步: 首先确保自 ... -
APMServ使用及下载
2011-12-29 17:06 1131APMServ 5.2.6 是一款拥 ... -
常用正则表达式
2011-12-28 11:49 904常用正则表达式 //匹配IPV4 ... -
SMIL 2.0 基础教程[转]
2011-12-28 11:47 1726SMIL 2.0 基础教程[转] 转自:http: ... -
struts2-jquery-plugin使用手册,自己写的
2011-12-27 09:25 2292由于工作需要,将工作中使用过的struts2-jquery-p ...
相关推荐
总结来说,这个“appinventor 项目作业包”提供了一个全面的学习资源,无论是对初学者还是有一定基础的学生,都能从中获益,加深对App Inventor 和移动应用开发的理解。通过实践和研究,你可以不断提升自己的编程和...
**App Inventor 知识点详解** App Inventor 是由麻省理工学院(MIT)开发的一款基于图形化编程的移动...通过学习和使用 App Inventor,你可以快速构建属于自己的 Android 应用程序,而无需深入掌握复杂的编程语言。
App Inventor 是一个基于 BLOCK 编程语言的可视化开发工具,能够帮助开发者快速构建移动应用程序。在这篇文章中,我们将使用 App Inventor 2.0 来制作一个简单又好玩的抽签 App。 一、绘制设计草图 在开始制作 App...
App Inventor是Google推出的一款针对初学者的移动应用开发工具,它采用图形化编程界面,让非专业程序员也能轻松创建自己的Android应用程序。通过拖拽组件、设置属性、编写简单逻辑,用户可以快速构建功能丰富的应用...
《App Inventor移动终端应用开发》是一门专为初学者设计的编程课程,旨在通过直观的积木式编程,让非专业程序员也能快速构建Android应用程序。App Inventor摒弃了传统编程中的复杂语法,转而采用图形化编程界面,...
"mqtt app 插件 App inventor" 指的是使用 MIT App Inventor 开发的一款应用程序,其中集成了 MQTT(Message Queuing Telemetry Transport)协议的插件。MQTT 是一种轻量级的发布/订阅消息传输协议,常用于物联网...
APP Inventor 是由麻省理工学院(MIT)开发的一款基于图形化编程的手机应用开发工具,它专为初学者设计,使得非专业程序员也能轻松创建自己的应用程序。2022年版本的APP Inventor在原有基础上进行了更新和优化,提供...
"基于App inventor的安卓版天气服务APP开发" 一、App Inventor简介 App Inventor是一种基于拼图式编程的安卓APP开发平台, 由Google公司推出。该平台适合初学者和非专业开发者,使用该平台可以快速开发移动应用...
在本实践项目中,我们将深入探讨如何使用Google App Inventor这一可视化编程工具来开发一个基本的记事本应用程序。App Inventor是专为初学者设计的,它通过拖拽编程块来构建移动应用,无需编写复杂的代码。让我们一...
App Inventor 2是一款无需传统编程知识即可开发安卓应用的平台,由谷歌最初的App Inventor 1演变而来,现由麻省理工学院(MIT)维护。其特点是使用拖拽编程方式,使得可视化编程变得简单直观。尽管App Inventor 2在...
文章首先介绍了App Inventor的开发环境和MLforkids的机器学习模型训练环境,然后详细介绍了项目的设计过程,包括样本收集、机器学习模型的训练和APP的编程设计。 知识点: 1. App Inventor是谷歌公司开发的在线...
这些资源文件是应用程序运行不可或缺的部分,合理管理和使用它们能提升APP的性能和用户体验。 总的来说,APP Inventor 2021离线版本提供了一种便捷且安全的本地开发环境,尤其适合教学和自学。同时,它也涵盖了网络...
本文首先介绍了App Inventor积木式编程的实用性和可行性,然后对App Inventor软件进行了分析和研究,最后设计和开发了“学英语”手机应用程序,旨在利用App Inventor编程提升中等职业学校学生的专业学习能力。...
1. **下载**:首先,你需要下载名为“AppInventor2017OfflineEdition_Win_beta2”的压缩包,这是一个针对Windows系统的版本。 2. **解压与安装**:解压文件后,按照安装指南进行操作,确保系统满足必要的硬件和软件...
本文旨在设计和开发基于App Inventor2的古诗词App,满足用户对古诗词App的应用需求,并为移动学习App的设计与开发提供参考。 移动学习的发展和应用 移动学习作为一种新的学习方式,已经成为教育领域研究的热点。...
标题中的"APP Inventor 2离线版(x64 最新)"指的是一个适用于64位操作系统的最新版本的APP Inventor 2,它是一个专为初学者设计的编程工具,用于创建移动应用程序,特别是Android应用。离线版意味着用户可以在没有...
在描述中提到的"aia文件"是APPinventor项目文件的扩展名,用于存储APPinventor应用的所有设计和逻辑代码。这种文件包含了用户在APPinventor环境中构建的界面元素、事件处理程序、变量和函数等信息。当你导入一个"aia...
App Inventor创意编程指南针App制作 App Inventor是一个基于块编程的...这些知识点对于学习App Inventor和mobile应用开发非常重要,能够帮助学生更好地理解和掌握App Inventor的使用方法和mobile应用开发的基本原理。
"app inventor自定义的wifi通信app" 这个标题表明我们讨论的是一个使用App Inventor开发的应用程序,它的核心功能是通过Wi-Fi进行通信。App Inventor是Google开发的一款图形化编程工具,特别适合初学者用于创建手机...
App Inventor积木式编程程序具有可视化操作、模块拼接编程的优点,易读懂、易编写、易理解,使学习变得简单有趣。 一、App Inventor积木式编程的概述 App Inventor是一款基于浏览器的在线安卓软件开发工具,采用搭...