AppInventor 应用的结构-wuhuth 应用的结构 通常从两个方面来描述应用的内部结构:组件及行为,这大致与App Inventor的两个主要窗口相对应:组件设计器及块编辑器。 前者用来设定应用中的对象(组件),而后者用来编写程序,实现对用户及外部事件的响应(应用程序的行为)。 App Inventor应用的内部结构 组件 组件分为两大类:可视组件及非可视组件。 可视组件:在应用启动后能够看到的组件,通常被视为应用的用户界面。
非可视组件是不可见的,通常用于访问设备的内置功能,是设备的技术核心,服务于应用程序
属性 组件都是由一组属性来定义,属性相当于组件信息的存储空间。如可视组件的Width、Height及Alignment属性,它们共同定义了组件的外观。 行为 应用中的行为,往往是抽象的和复杂的。 行为定义了应用对事件的响应,无论是用户发起的事件(如点击按钮),还是外部事件(如手机收到短信)。 App Inventor提供了一种非常适合于定义行为的可视化“块”语言 用什么来解释应用? 人们习惯于把软件与菜谱相对比。像菜谱一样,传统的应用由一系列的顺序排列的指令构成,而计算机(厨师)则按顺序执行这些指令。 应用就是一系列的事件处理程序 应用就是一系列的事件处理程序 应用更为普遍的是对事件的响应,事件的触发者是最终用户。 应用更适合于概括为“对事件做出响应的组件的集合”。应用中依然包含了“菜谱”——一些顺序执行的指令,但每个菜谱只限于对某些特定事件做出响应。 事件处理程序(Event Handler) 当事件发生时,应用通过调用一系列的函数进行回应。如: ①利用某些组件来完成某些操作,如发送短信; ②对某些组件属性进行操作,如在用户界面上修改label的text属性。 我们把事件,连同对事件进行响应的一系列函数统称为事件处理程序(Event Handler)。 应用可以兼顾对内部及外部事件的响应
事件处理程序(Event Handler) App Inventor编程完全基于事件响应模式,而“事件处理程序”则是最重要的词汇。 想要定义某个行为,首先要拖出一个事件块,事件块在形式上是这样的:“When?do”。假设有这样一个“朗读”应用,当用户点击按钮时,应用大声读出用户输入的文字,这个应用只需要一个事件处理程序 事件处理程序(Event Handler) 在App Inventor中,所有活动都发生在对事件的响应之中,应用中不可能存在事件块“when-do”之外的块。 事件类型 用户引发的事件 用户引发的事件是一种最常见的事件类型。 在输入表单中,通常点击按钮事件
会引发应用的响应。 图形化的应用更多的是对触摸及拖拽事件做出响应。 初始化事件 应用启动时实现某些功能 App Inventor中,应用的启动也被视为一种事件。可以拖出Screen1.Initialize事件块,并将某些函数调用块放在其中。 计时器事件 应用中的某些活动是由时间的流逝而触发的,比如动画,可以理解为计时器事件触发了角色的移动。 App Inventor有一个Clock组件,用于触发计时器事件。 动画事件 在canvas范围内的图形对象(sprites),它们的活动将触发动画事件。 当两个sprites发生碰撞,或一个sprites到达canvas的边界时,将触发动画事件。 因此可以编写游戏或其他交互式动画程序,利用动画事件来定义游戏或动画的情节。 外部事件 当手机收到短信时,会触发此类事件。 这类向设备输入外来信息的行为都被视为外部事件,用户点击按钮也属于此类事件。
应用是一系列的事件处理程序 从本质上讲应用是一系列的事件处理程序。 对应用的初始化,响应最终用户的输入,由事件触发,由外部事件触发。 要以事件处理的方式构思应用,然后设计对每个事件的响应方式。 事件处理程序能做什么? 事件处理程序可以提问 “条件分支”----使用if块、ifelse块 事件处理程序可以重复执行某些块 循环结构---foreach及while do 事件处理程序可以实现存储功能 临时存储(变量)及永久存储(数据库) 事件处理程序可以与Web对话 小结 应用开发者必须以两种视角来观察一个应用,一个是最终用户的视角,另一个则是自内向外的程序员的视角。 开发应用,首先要设计应用的外观,然后设计应用的行为——一套事件处理程序,让应用按照你的意图去运行。 * * *
原创力文档

文档评论(0)