AppInventor指令说明书_彭小忠
1
AppInventor指令说明
1Definition指令区
procedure
procedureWithResult
name
variable
|
程序procedure
将多个指令集合在一起,之后可通过呼叫该程序来使用这些指令。如果该程
序包含了参数,则必顸使用name指令来命名该参数。当建立一个程序之后,
AppInventor会自动产生一个呼叫(call)指令,位于MyDefinitionsdrawer之中,
您可使用该指令来呼叫对应的程序。
当建立一个新的程序指令时,AppInventor会自动帮它取一个名称,您也可
以点选它之后自行改成您所需要的名称。在一个程序中的程序名称必须是唯一
的,AppInventor不允许在同一个程序中有两个名称相同的程序。您可点选程序
上的卷标来将其重新命名。AppInventor会自动调整对应的呼叫指令名称。
具回传值的程序procedureWithResult
本指令与程序指令相同,但使用时会回传一个结果。当本程序执行完毕后会
将return字段回传。
名称name
可建立一个name参数来呼叫指定的程序。定义参数的方法就是将name插入
procedure的arg插槽。可使用的参数数目不限,每当您填入一个参数插槽时,
就会自动跳出新的参数插槽。只要点选右下方的name标签就可将其重新命名。
当建立一个程序之后,AppInventor会自动产生一个呼叫(call)指令,位于My
AppInventor指令说明书_彭小忠
2
Definitionsdrawer之中,您可使用该指令来呼叫对应的程序。
AppInventor会自动帮您所建立的名称参数建立对应的取值指令并将它们放在
MyDefinitionsdrawer中。您可使用这些指令来存取该参数的值,当该程序被呼
叫时,该值就会被传送过去给程序。
注意:现在的AppInventor版本规定一个程序中的所有参数名称都必顸是唯
一的,即便是在不同程序下的参数也是一样(C、Java就无此限制)。例如两个不
同程序就不能都使用名为x的变量。当您要建立第二个x时,AppInventor就不
会让您这么做。这个限制也许在未来会开放出来。
变量variable
建立一个在程序执行时可以动态改变的值,别忘了给它一个名字。在此所建
立的变量为全局变量(globalvariable),代表程序中的任何一个指令都可以存取此
变量,当然也可以从procedure中来呼叫。
当建立一个新的变量时,AppInventor会自动帮它取一个名称,您也可以点选它
之后自行改成您所需要的名称。在一个程序中的变量名称必顸是唯一的,App
Inventor不允许在同一个程序中有两个名称相同的变量。
另一方面在建立变量完成后,AppInventor会自动产生两个相关的指令,它们位
于MyDefinitionsdrawer中:
global指令用来取得变量值。
tglobal指令用来设定变量值。
您在编写程序的过程中随时可以修改变量的名称,修改完成之后对应的指令
也会自动修正名称。
转接头|
本指令是为了左侧没有对应插槽的指令所产生的,本指令就好像转接头一
样,并没有程序上的作用。这时候您转接的指令就可以执行了,但它们如果有回
传值的话在此会被忽略。有时候当我们建立一个具回传值的程序,但想要在背景
呼叫它时(此时不能使用回传值),这个功能就很好用了。
2Text文字指令区
text
join
maketext
length
text<
text=
text>
trim
upca
downca
startsat
contains
splitatfirst
splitatfirstofany
AppInventor指令说明书_彭小忠
3
split
splitatany
splitatspaces
gment
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大。若两者的
第一个字母相同则比较字符串长度。大写字母比小写字母优先。
AppInventor指令说明书_彭小忠
4
upca
将指定字符串全部转为大写。
downca
将指定字符串全部转为小写。
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"分割的结果是(onetwo
threefour)这个清单。
splitatany
将字符串从列表项目(at)来切割,意即使用列表项目来切割字符串,并回传结果。
例如将字符串"appleberry,banana,cherry,dogfoodwith"以一个具有两个项目的列
表来切割,第一个项目为逗号",",第二个项目为"rry",切割结果为(applebebanana
chedogfood)这个字符串。
splitatspaces
将指定字符串在所有空格处分开,以清单输出结果。
gment
将原字符串从指定位置start开始并指定长度length后产生子字符串。
replaceall
将原字符串以新的子字符串取代后回传新的字符串。
3List列表指令区
makealist
AppInventor指令说明书_彭小忠
5
lectlistitem
replacelistitem
removelistitem
inrtlistitem
lengthoflist
appendtolist
additemstolist
isinlist?
positioninlist
pickrandomitem
islistempty?
copylist
isalist?
listtocsvrowlisttocsvtablelistfromcsvrowlistfromcsvtable
AppInventor中的list就是一般程序中的数组,所以相关操作方法皆与数组
非常相似。但请注意AppInventor的List编号从1开始,数组编号则从0开始。
makealist
新增一个列表,并自行指定其元素(item)。若您未指定任何元素,则此为一
空清单,您可以之后再加入元素。
lectlistitem
取得列表list的指定位置index元素内容,第一个列表元素位置为1。
replacelistitem
将列表的指定位置元素以新的内容replacement取代。
removelistitem
从列表中删除指定位置的元素。
inrtlistitem
将指定内容item插入列表的指定位置。
lengthoflist
回传列表的长度,也就是元素数目。
appendtolist
将第一个清单list1与第二个清单list2组成一个新的清单。
additemstolist
AppInventor指令说明书_彭小忠
6
将指定内容item接在清单的后面。本指令与appendtolist指令的差别在于
appendtolist指令是将两个列表组起来,而additemstolist指令是将要新增的内
容当作个别参数来操作,会自动产生新的插槽。
isinlist?
若指定内容thing存在于清单中回传true,反之回传fal。注意:若一列表
中含有子列表,则子列表的元素不包含在原列表中。例如清单(12(34))的元素为
1、2以及子清单(34);单独3或4并非这个list的元素。
positioninlist
回传指定内容thing位于列表中的位置,回传0代表清单不包含指定内容。
pickrandomitem
从列表中随机取得任一项目。
islistempty?
如果清单为空,回传true;反之回传fal。
copylist
复制列表,如果列表包含子列表也会一并复制。
isalist?
如果指定内容格式为清单,回传true;反之回传fal。
listtocsvrow
将列表转换为CSV表格中的列row,并以CSV(comma-paratedvalue)格
式回传。Row中的每一个项目就是一个字段(field)。回传的文件结尾不会包含
换行符号。
listtocsvtable
将列表以列优先的方式转换为CSV表格,并以CSV格式回传。回传列表中的
项目是另一个列表,代表CSV表格中的列,每列中的项目则是该列的字段。列中
的项目是以逗号分隔,列彼此之间则是以CRLF(rn)符号分隔。
listfromcsvrow
将CSV文件中的列解析并回传一个列表,列表内容就是该列的各个字段。不
同列将以n或CRLF(rn)符号来区隔。如果列中的文字是以新的一列或是CRLF
符号结束,这样的语法是允许的。
listfromcsvtable
将CSV表格解析并回传一个列表,列表内容代表不同的列(再包含不同的字
段)。不同列将以n或CRLF(rn)符号来区隔。
4Math数学指令区
number
>
<
<=
>=
equals
+
AppInventor指令说明书_彭小忠
7
−
×
/
sqrt
randomfraction
randominteger
randomted
negate
min
max
quotient
remainder
modulo
abs
round
floor
ceiling
expt
exp
log
sin
cos
tan
asin
acos
atan
atan2
formatasdecimal
isanumber?
AppInventor指令说明书_彭小忠
8
number
指定一个数字常数。
>
比较两个指定数字。如果前者大于后者时,回传true,否则回传fal。
<
比较两个指定数字。如果前者小于后者时,回传true,否则回传fal。
≤
比较两个指定数字。如果前者小于或等于后者时,回传true,否则回传fal。
≥
比较两个指定数字。如果前者大于或等于后者时,回传true,否则回传fal。
equals
比较两个指定数字是否相等。如果是的话,回传true,否则回传fal。此指
令和在logic指令区中的指令功能相同,仅为了方便所以两边都放。本指令
的参数可为其他数据型态,而不仅仅是数字。
Not=?
比较两个指定数字是否不相等。如果是的话,回传true,否则回传fal。
+
回传两个指定数字的和。
−
AppInventor指令说明书_彭小忠
9
回传两个指定数字的差。
×
回传两个指定数字的积。
÷
回传前者除以后者的商。例如,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
回传指数的运算结果。(ba:底;exponent:指数)。
exp
回传e(2.71828...)的指定次方运算结果。
log
回传指定数字的自然对数运算结果。
AppInventor指令说明书_彭小忠
10
sin
回传指定数字的正弦函数值,单位:度。
cos
回传指定数字的余弦函数值,单位:度。
tan
回传指定数字的正切函数值,单位:度。
asin
回传指定数字的反正弦函数值。
acos
回传指定数字的反余弦函数值。
atan
回传指定数字的反正切函数值。
atan2
回传y/x的反正切函数值。
convertradianstodegrees
将弧度转换为角度。
convertdegreestoradians
将角度转换为弧度。
formatasdecimal
将原数字转换为指定位数之小数。指定小数位数不能为负数。若原小数位数
过多则四舍五入,反之则补0。
isanumber?
指定对象如果为数字,回传true,反之回传fal。
5logic逻辑指令区
true
fal
not
=
and
or
true
布尔常数的真(true)。用来设定组件的布尔(boolean)属性值,或用来表
AppInventor指令说明书_彭小忠
11
示某种状况之变量值。
fal
布尔常数的假(fal)。用来设定组件的布尔属性值,或用来表示某种状况
之变量的值。
not
逻辑运算的not。输入true或条件判断为true则回传fal,反之回传true。
equals
综合性的等于运算符
两个数字是否相等(例如:1=1.0)
两个字符串是否相等,包括大小写。例如banana不等于Banana。
若两个列表的长度相同且对应组件相等则相等。
and
测试是否所有的叙述皆为真。当您插入第一个test项目时会自动跑出第二个
插槽。测试顺序由上到下,测试过程中若任一条件已知为假则停止测试。若
无任何叙述则回传true。
or
测试所有叙述中是否至少有一者为真。当您插入第一个test项目时会自动跑
出第二个插槽。测试顺序由上到下,测试过程中若任一条件已知为真则停止
测试。若无任何叙述则回传fal。
6Control控制指令区
if
ifel
choo
foreach
forrange
while
getstarttext
closcreen
closcreenwithresult
AppInventor指令说明书_彭小忠
12
if
测试指定条件test。若为true则执行以下动作,反之则跳过此段。
ifel
测试指定叙述。若为true则执行then-do以下区块,反之则则执行el-do以
下区块。
choo
测试指定叙述。若为true则执行then-do以下区块并回传then-return之值,
反之则则执行el-do以下区块并回传el-return之值。
foreach
根据指定列表的元素数目来决定do的执行次数。您可使用该变量名称来取
得它的值。
forrange
根据指定范围之整数个数来决定do的执行次数,可自由设定每次累加的数
字step。您可使用该变量名称来取得它的值。
while
测试指定叙述。若为true则重复执行以下动作,反之则结束此段。
getstarttext
如果有本项设定,当程序启动时回传所接收到的字符串信息。
closcreen
关闭屏幕。
closcreenwithresult
AppInventor指令说明书_彭小忠
13
关闭屏幕,并指定回传结果result。
cloapplication
结束程序。
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为常用颜色的颜
色色表,欢迎多加利用。
AppInventor指令说明书_彭小忠
14
本文发布于:2022-11-26 07:26:33,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/23669.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |