小学生系列之三——涂鸦板(高级)

一、功能描述

在初级涂鸦的基础上,增加颜色的可选范围——可以选择任意一种颜色,并显示选中的颜色。


二、组件

在初级涂鸦基础上添加三个数字滑动条、一个标签,并删除三个颜色按钮

重要提醒:删除组件时,如果希望保留与组件相关的代码,则需先将代码移植到别处,再删除组件,否则,与组件相关的代码会与组件一同被自动删除。


三、认识代码块

1、颜色合成

计算机可以处理任何类型的数据(数字、文本、逻辑、列表、颜色等等),但这些数据都将被转化成数字,严格地说,要转化成二进制数,才能最终被处理完成。在计算机中,颜色是数字合成的结果,如图所示,列表中的三个数字,自上而下分别代表红绿蓝三种颜色,最小值为0,最大值为255,图 1中的三个数字(255,0,0)合成的结果是红色。

图1 颜色合成块

我们将利用这个块来调出我们需要的颜色,每种颜色的取值来自于三个数字滑动条的滑块位置。


2、屏幕初始化

有些时候,我们希望应用启动时,将某些组件的属性设置成特定的值,例如,本项目中,我们用三个数字滑动条来调颜色,并用调色盘标签来(背景颜色)显示调色结果,而应用刚刚启动时,三个滑动条的滑块位置均为0,因此,我们希望调色盘的背景颜色能够表现出这一默认设置。这样的设置需要在屏幕初始化事件中完成,如图 2所示。

图2 屏幕初始化程序

这里用三个滑块的位置来替代具体的数字,此时,这三个值均为0,因此调色板显示为黑色。


3、滑块位置改变时,显示调色结果

图3 显示调色结果


4、创建有返回值过程

在图 3中,代码看起来及其相似,其中颜色合成块已经被使用了7次(屏幕初始化中1次),对于这样的代码,我们可以将它们写成一个过程,并在原来调用处,直接调用过程,如图 4所示。

图4 定义过程提高代码复用性

在上图中我们定义了一个有返回值的过程——合成色(将默认的“我的过程”改为“合成色”),直接将原来的合成颜色代码拖到过程定义块中,并用定义的过程替代原来的代码。那么从哪里取得这个“调用合成色”块呢?

一旦我们定义了新过程,就会在过程类代码块抽屉中自动添加调用这个过程的块,如图 5所示。

图5 过程类代码块抽屉中自动添加了调用过程块


5、创建无返回值过程

图4中的代码看起来还是很相像,三个数字滑动条的位置改变事件中,所运行的代码是完全相同的,有必要将它们定义为过程,并在滑块位置改变事件中调用该过程。我们为过程取名为“调色”,如图6所示。

图6 定义无返回值过程——调色

最后,别忘记将屏幕初始化程序中的代码改为调用“合成色”过程。

图7 在屏幕初始化程序中调用调色过程

四、编程技术

1、命名的重要性

写程序如同写剧本,主要角色的名字是非常重要的,只有那些跑龙套的角色才不需要名字,他们通常被称为“匪兵甲”、“匪兵乙”等等。

需要命名的有三类事物——组件、变量及过程。在本应用中,画布、照相机以及三个布局组件均采用了默认的命名,其中画布与照相机虽然也是主要“角色”,但因为项目中只有一块画布、一个相机,而默认的名称很好地表达了它们的功能,因此无须重新命名;布局组件在这个应用中是不折不扣的“龙套”,因此也无须重新命名;其余组件,都被赋予了一个有意义的名字,如滑动条的红色、绿色、蓝色,标签被命名为调色板,这些名称明确地表达了组件的用途,这样的命名使得代码具有了很好的可读性,即,读起来并不像程序,却像一篇短文。例如:“当绿色位置改变时,调色!”。

好的名字可以让我们在编写程序时,保持思路的清晰与顺畅,你一定不希望在自己才思如涌时,被蹩脚的名字绊住手脚。


2、过程的作用

过程的作用有三点:

  1. 提高代码的复用性:一段被多次重复使用的代码,一旦被封装为过程,即可直接调用过程,免去了重复书写代码的烦恼;

  2. 提高程序的稳定性:重复书写代码容易出错,尤其是在程序需要修改时,极有可能会忘记修改某处的代码,导致程序出错;

  3. 改善代码的易读性:如果你的过程命名贴切,那么阅读代码将不再是一件令人头疼的事情。

五、课后作业

  1. 是否可以用按钮来替代标签,充当调色盘?它们之间的优劣如何?

  2. 为什么应用中许多组件的宽度设为充满,这样做的好处是什么?

(0)

相关推荐