App Inventor指令说明.docx
- 文档编号:11607097
- 上传时间:2023-03-28
- 格式:DOCX
- 页数:21
- 大小:281.91KB
App Inventor指令说明.docx
《App Inventor指令说明.docx》由会员分享,可在线阅读,更多相关《App Inventor指令说明.docx(21页珍藏版)》请在冰豆网上搜索。
AppInventor指令说明
AppInventor指令说明
1Definition指令区
procedure
procedureWithResult
name
variable
|
程序procedure
将多个指令集合在一起,之后可透过呼叫该程序来使用这些指令。
如果该程序包含了参数,则必顸使用name指令来命名该参数。
当建立一个程序之后,AppInventor会自动产生一个呼叫(call)指令,位于MyDefinitionsdrawer之中,您可使用该指令来呼叫对应的程序。
当建立一个新的程序指令时,AppInventor会自动帮它取一个名称,您也可以点选它之后自行改成您所需要的名称。
在一个程序中的程序名称必顸是唯一的,AppInventor不允许在同一个程序中有两个名称相同的程序。
您可点选程序上的卷标来将其重新命名。
AppInventor会自动调整对应的呼叫指令名称。
具回传值的程序procedureWithResult
本指令与程序指令相同,但使用时会回传一个结果。
当本程序执行完毕后会将return字段回传。
名称name
可建立一个name参数来呼叫指定的程序。
定义参数的方法就是将name插入procedure的arg插槽。
可使用的参数数目不限,每当您填入一个参数插槽时,就会自动跳出新的参数插槽。
只要点选右下方的name标签就可将其重新命名。
当建立一个程序之后,AppInventor会自动产生一个呼叫(call)指令,位于MyDefinitionsdrawer之中,您可使用该指令来呼叫对应的程序。
AppInventor会自动帮您所建立的名称参数建立对应的取值指令并将它们放在MyDefinitionsdrawer中。
您可使用这些指令来存取该参数的值,当该程序被呼叫时,该值就会被传送过去给程序。
注意:
现在的AppInventor版本规定一个程序中的所有参数名称都必顸是唯一的,即便是在不同程序下的参数也是一样(C、Java就无此限制)。
例如两个不同程序就不能都使用名为x的变量。
当您要建立第二个x时,AppInventor就不会让您这么做。
这个限制也许在未来会开放出来。
变量variable
建立一个在程序执行时可以动态改变的值,别忘了给它一个名字。
在此所建立的变量为全局变量(globalvariable),代表程序中的任何一个指令都可以存取此变量,当然也可以从procedure中来呼叫。
当建立一个新的变量时,AppInventor会自动帮它取一个名称,您也可以点选它之后自行改成您所需要的名称。
在一个程序中的变量名称必顸是唯一的,AppInventor不允许在同一个程序中有两个名称相同的变量。
另一方面在建立变量完成后,AppInventor会自动产生两个相关的指令,它们位于MyDefinitionsdrawer中:
global指令用来取得变量值。
setglobal指令用来设定变量值。
您在编写程序的过程中随时可以修改变量的名称,修改完成之后对应的指令也会自动修正名称。
转接头|
本指令是为了左侧没有对应插槽的指令所产生的,本指令就好像转接头一样,并没有程序上的作用。
这时候您转接的指令就可以执行了,但它们如果有回传值的话在此会被忽略。
有时候当我们建立一个具回传值的程序,但想要在背景呼叫它时(此时不能使用回传值),这个功能就很好用了。
2Text文字指令区
text
=
join
maketext
length
text<
text=
text>
trim
upcase
downcase
startsat
contains
splitatfirst
splitatfirstofany
split
splitatany
splitatspaces
segment
replaceall
text
指定一个字符串常数。
join
将两个指定字符串合成一个新字符串。
对于此指令,数字也被视为字符串。
例如:
用join指令来合成1+1及2×3则回传26(2和6合成)。
maketext
将所有的指定值依序合成一个字符串。
Length
回传指定字符串的长度。
text<
回传第一个字符串text1是否在字母排列上比第二个字符串text2小。
若两者的第一个字母相同则比较字符串长度。
大写字母比小写字母优先。
text=
回传第一个字符串text1与第二个字符串text2是否相等。
请注意如果要比较的字符串中含有数字,则数学上的=与字符串上的text=结果是不一样的。
如果两个textbox,其中一个内容为123,另一个是0123,则数学上比较结果为相等,但字符串上比较则不相等。
text>
回传第一个字符串text1是否在字母排列上比第二个字符串text2大。
若两者的第一个字母相同则比较字符串长度。
大写字母比小写字母优先。
upcase
将指定字符串全部转为大写。
downcase
将指定字符串全部转为小写。
trim
删除指定字符串的头尾空格。
startsat
回传指定子字符串在指定字符串中的位置,找不到则回传0。
例如子字符串"ana"在"Havana"中的位置为4。
请注意!
在一般程序设计语言中,数组的第一个元素编号为0,但AppInventor中的第一个元素编号为1。
Contains
若指定子字符串出现在指定字符串中则回传真,反之则回传假。
splitatfirst
将字符串从指定分割点(at)第一次出现的地方分成两个子字符串,并回传一个包含这两个子字符串的列表,一个是从原字符串第一个字母到分割点前一个字母,另一个则是分割点后一个字母到原字符串结尾。
例如将字符串"apple,banana,cherry,dogfood"使用逗号","来分割,回传结果会是两个子字符串:
第一个子字符串为"apple",第二个子字符串为"banana,cherry,dogfood"。
请注意逗号","这个分割点不包含在任何一个子字符串中。
splitatfirstofany
将字符串从指定分割点(at)分割成两个子字符串,并回传一个包含这两个子字符串的列表。
split
将字符串从指定分割点切割,并以清单回传切割结果。
例如将字符串"one,two,three,four"从逗号","分割的结果是(onetwothreefour)这个清单。
将字符串"one-potato,two-potato,three-potato,four"从"at-potato"分割的结果是(onetwothreefour)这个清单。
splitatany
将字符串从列表项目(at)来切割,意即使用列表项目来切割字符串,并回传结果。
例如将字符串"appleberry,banana,cherry,dogfoodwith"以一个具有两个项目的列表来切割,第一个项目为逗号",",第二个项目为"rry",切割结果为(applebebananachedogfood)这个字符串。
splitatspaces
将指定字符串在所有空格处分开,以清单输出结果。
segment
将原字符串从指定位置start开始并指定长度length后产生子字符串。
replaceall
将原字符串以新的子字符串取代后回传新的字符串。
3List列表指令区
makealist
selectlistitem
replacelistitem
removelistitem
insertlistitem
lengthoflist
appendtolist
additemstolist
isinlist?
positioninlist
pickrandomitem
islistempty?
copylist
isalist?
listtocsvrowlisttocsvtablelistfromcsvrowlistfromcsvtable
AppInventor中的list就是一般程序中的数组,所以相关操作方法皆与数组非常相似。
但请注意AppInventor的List编号从1开始,数组编号则从0开始。
makealist
新增一个列表,并自行指定其元素(item)。
若您未指定任何元素,则此为一空清单,您可以之后再加入元素。
selectlistitem
取得列表list的指定位置index元素内容,第一个列表元素位置为1。
replacelistitem
将列表的指定位置元素以新的内容replacement取代。
removelistitem
从列表中删除指定位置的元素。
insertlistitem
将指定内容item插入列表的指定位置。
lengthoflist
回传列表的长度,也就是元素数目。
appendtolist
将第一个清单list1与第二个清单list2组成一个新的清单。
additemstolist
将指定内容item接在清单的后面。
本指令与appendtolist指令的差别在于appendtolist指令是将两个列表组起来,而additemstolist指令是将要新增的内容当作个别参数来操作,会自动产生新的插槽。
isinlist?
若指定内容thing存在于清单中回传true,反之回传false。
注意:
若一列表中含有子列表,则子列表的元素不包含在原列表中。
例如清单(12(34))的元素为1、2以及子清单(34);单独3或4并非这个list的元素。
positioninlist
回传指定内容thing位于列表中的位置,回传0代表清单不包含指定内容。
pickrandomitem
从列表中随机取得任一项目。
islistempty?
如果清单为空,回传true;反之回传false。
copylist
复制列表,如果列表包含子列表也会一并复制。
isalist?
如果指定内容格式为清单,回传true;反之回传false。
listtocsvrow
将列表转换为CSV表格中的列row,并以CSV(comma-separatedvalue)格式回传。
Row中的每一个项目就是一个字段(field)。
回传的文件结尾不会包含换行符号。
listtocsvtable
将列表以列优先的方式转换为CSV表格,并以CSV格式回传。
回传列表中的项目是另一个列表,代表CSV表格中的列,每列中的项目则是该列的字段。
列中的项目是以逗号分隔,列彼此之间则是以CRLF(\r\n)符号分隔。
listfromcsvrow
将CSV文件中的列解析并回传一个列表,列表内容就是该列的各个字段。
不同列将以\n或CRLF(\r\n)符号来区隔。
如果列中的文字是以新的一列或是CRLF符号结束,这样的语法是允许的。
listfromcsvtable
将CSV表格解析并回传一个列表,列表内容代表不同的列(再包含不同的字段)。
不同列将以\n或CRLF(\r\n)符号来区隔。
4Math数学指令区
number
>
<
<=
>=
equals
+
−
×
/
sqrt
randomfraction
randominteger
randomsetseed
negate
min
max
quotient
remainder
modulo
abs
round
floor
ceiling
expt
exp
log
sin
cos
tan
asin
acos
atan
atan2
formatasdecimal
isanumber?
number
指定一个数字常数。
>
比较两个指定数字。
如果前者大于后者时,回传true,否则回传false。
<
比较两个指定数字。
如果前者小于后者时,回传true,否则回传false。
≤
比较两个指定数字。
如果前者小于或等于后者时,回传true,否则回传false。
≥
比较两个指定数字。
如果前者大于或等于后者时,回传true,否则回传false。
equals
比较两个指定数字是否相等。
如果是的话,回传true,否则回传false。
此指令和在logic指令区中的指令功能相同,仅为了方便所以两边都放。
本指令的参数可为其他数据型态,而不仅仅是数字。
Not=?
比较两个指定数字是否不相等。
如果是的话,回传true,否则回传false。
+
回传两个指定数字的和。
−
回传两个指定数字的差。
×
回传两个指定数字的积。
÷
回传前者除以后者的商。
例如,1除以3为0.3333。
sqrt
回传指定数字的平方根。
randomfraction
回传一个介于0和1之间的随机小数。
randominteger
回传一个介于指定数字之间的随机整数,包含上限(to)与下限(from)。
参数由小到大或由大到小不会影响计算结果。
negate
回传指定数字的相反数。
min
回传指定数字中最小者。
max
回传指定数字中最大者。
quotient
quotient(a,b)指令回传第一个数a除以第二个数b的商,但只取整数部分,小数点以后忽略不计。
remainder
remainder(a,b)指令可回传第一个数a除以第二个数b的余数(remainder)。
例如Forexample,remainder(11,5)为1;remainder(-11,5)为-1;remainder(11,-5)为1;remainder(-11,-5)为-1。
modulo
当指定数字皆为正数时,Modulo(a,b)计算结果与remainder(a,b)相同。
一般公式如下:
对所有a与b而言,(floor(a/b)×b)+modulo(a,b)=a。
例如modulo(11,5)为1;modulo(-11,5)为4;modulo(11,-5)为-4;modulo(-11,-5)为-1。
Modulo(a,b)永远与b同号,但remainder(a,b)则永远与a同号。
abs
回传指定数字的绝对值。
round
回传指定数字四舍五入到整数字的运算结果。
floor
回传指定数字无条件舍去到整数字的运算结果。
ceiling
回传指定数字无条件进位到整数字的运算结果。
expt
回传指数的运算结果。
(base:
底;exponent:
指数)。
exp
回传e(2.71828...)的指定次方运算结果。
log
回传指定数字的自然对数运算结果。
sin
回传指定数字的正弦函数值,单位:
度。
cos
回传指定数字的余弦函数值,单位:
度。
tan
回传指定数字的正切函数值,单位:
度。
asin
回传指定数字的反正弦函数值。
acos
回传指定数字的反余弦函数值。
atan
回传指定数字的反正切函数值。
atan2
回传y/x的反正切函数值。
convertradianstodegrees
将弧度转换为角度。
convertdegreestoradians
将角度转换为弧度。
formatasdecimal
将原数字转换为指定位数之小数。
指定小数位数不能为负数。
若原小数位数过多则四舍五入,反之则补0。
isanumber?
指定对象如果为数字,回传true,反之回传false。
5logic逻辑指令区
true
false
not
=
and
or
true
布尔常数的真(true)。
用来设定组件的布尔(boolean)属性值,或用来表示某种状况之变量值。
false
布尔常数的假(false)。
用来设定组件的布尔属性值,或用来表示某种状况之变量的值。
not
逻辑运算的not。
输入true或条件判断为true则回传false,反之回传true。
equals
综合性的等于运算符
两个数字是否相等(例如:
1=1.0)
两个字符串是否相等,包括大小写。
例如banana不等于Banana。
若两个列表的长度相同且对应组件相等则相等。
and
测试是否所有的叙述皆为真。
当您插入第一个test项目时会自动跑出第二个插槽。
测试顺序由上到下,测试过程中若任一条件已知为假则停止测试。
若无任何叙述则回传true。
or
测试所有叙述中是否至少有一者为真。
当您插入第一个test项目时会自动跑出第二个插槽。
测试顺序由上到下,测试过程中若任一条件已知为真则停止测试。
若无任何叙述则回传false。
6Control控制指令区
if
ifelse
choose
foreach
forrange
while
getstarttext
closescreen
closescreenwithresult
if
测试指定条件test。
若为true则执行以下动作,反之则跳过此段。
ifelse
测试指定叙述。
若为true则执行then-do以下区块,反之则则执行else-do以下区块。
choose
测试指定叙述。
若为true则执行then-do以下区块并回传then-return之值,反之则则执行else-do以下区块并回传else-return之值。
foreach
根据指定列表的元素数目来决定do的执行次数。
您可使用该变量名称来取得它的值。
forrange
根据指定范围之整数个数来决定do的执行次数,可自由设定每次累加的数字step。
您可使用该变量名称来取得它的值。
while
测试指定叙述。
若为true则重复执行以下动作,反之则结束此段。
getstarttext
如果有本项设定,当程序启动时回传所接收到的字符串信息。
closescreen
关闭屏幕。
closescreenwithresult
关闭屏幕,并指定回传结果result。
closeapplication
结束程序。
7Color颜色指令区
TheBlocksEditorColorsdrawer包含了各种常用的颜色指令,您可将它们直接插入需要颜色设定的指令中,例如设定文字颜色或是某组件的背景颜色。
这些颜色也可以在Designer页面中的相关属性中来设定。
如何自定义颜色
AppInventor中的颜色是以数字进行编码,例如蓝色是由-16776961这个负数所代表。
如果您知道如何自定颜色色码,就不必受限于AppInventor那少少的内建颜色了,可以在您的app中自由创造各种色彩。
颜色是由4个数字所共同决定的,每个数字的范围都是0~255。
前三个数字代表红、绿、蓝三原色的强度。
您可以从网络上找到各种颜色的RGB色表,当然也可以自己实验一下来找到喜欢的颜色。
第4个数字则是「不透明度(opacity)」,代表多个组件迭在一起时的视觉效果。
Opacity255是完全不透明,该颜色会将其下层所有的东西都盖过去。
Opacity0则是完全透明,您在屏幕上甚至看不到这个颜色了。
介于两者中间的数值则决定该颜色底下东西的可视程度。
请依照下列步骤要求出某种颜色在AppInventor中的数字代码:
1.先设定不透明度(opacity)。
2.乘以256之后加上R(红色强度)。
3.第2步计算结果乘以256之后加上G(绿色强度)。
4.第3步计算结果乘以256之后加上B(蓝色强度)。
5.第4步计算结果减掉168(4294967296)。
6.计算结果(皆为负数)就是您之后要用在AppInventor中的颜色代码。
请看以下范例,deepshadeofpurple的RGB设定为R=160,G=32,B=240,.将这些数值代入以上的公式,并将opacity设为255,计算结果为-6283024。
如果您将画布的背景颜色设为这个数值,就可以看到屏幕变成漂亮的紫色了。
以下的范例程序说明了如何指定RGB值来得到特定的颜色,不透明度都固定为255,或者您也可以自由调整不透明度的设定值。
下表1为常用颜色的颜色色表,欢迎多加利用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- App Inventor指令说明 Inventor 指令 说明