发表日期: 2021-04-01 16:59:26 浏览次数:223
涟源小程序制作【涟源企业邮箱】涟源网站外包、涟源微信商城开发、涟源网店美工、涟源淘宝设计
涟源市,隶属于湖南省娄底市,位于湖南省中部,衡邵盆地北缘,涟水、孙水上游,1951年置县,1987年撤县设市。涟源市总面积1830平方公里,辖19个乡镇办事处和1个高新区,截至2017年末常住人口98.3万人。
涟源地处湖南几何中心,是湘中重要交通枢纽,娄新高速、长韶娄高速、二广高速、沪昆高铁贯穿全境。涟源市自然资源丰富,素称“煤海”“建材之乡”和“有色金属之乡”,是湖南能源原材料基地,全国100个重点产煤县市,全国知名煤机生产基地,全国产粮大县。
2018年,涟源市实现地区生产总值290.6亿元,按可比价计算,同比增长8.2%;完成财政总收入131454万元,同比增长8.5%;城镇居民人均可支配收入为22255元,同比增长9.5% ;农村居民人均可支配收入为10125元,增长11.3%。 [1-3]
2019年12月,成为全国乡村治理体系建设试点单位。 [4] 2020年2月29日,湖南省人民政府同意涟源市退出贫困县。 [5] 2021年1月29日,入选湖南省人民政府公布的2020年度真抓实干成效明显的地区名单。
下一步将定义组件的行为。编写一个绘画程序的难度似乎是难以想象的,但无疑App Inventor已经承担了大部分繁重的工作:这里有易于使用的块语言,不但可以处理用户的触摸及拖拽事件,也可以实现绘画及拍照功能。
Canvas组件具有Touched及Dragged事件,你可以针对DrawingCanvas.Touched(触碰)事件编程,并调用DrawingCanvas.DrawCircle(画圆)程序;也可以对DrawingCanvas.Dragged(拖拽)事件编程来调用DrawingCanvas.DrawLine(画线)程序。然后对按钮编程,来设置DrawingCanvas.PaintColor(画笔颜色)属性、清除DrawingCanvas,以及将DrawingCanvas的背景图片修改为照相机拍摄的图片。
首先设置触碰行为:当用户触碰DrawingCanvas时,在接触点绘制一个圆点:
1. 在块编辑器中,打开DrawingCanvas抽屉拖出DrawingCanvas.Touched块,该块有三个参数x、y及touchedSprite,如图2-6所示。这些参数提供了接触点的位置信息;

图 2-6 带有接触点位置信息的Toughed事件
提示:在第一章HelloPurr应用中已经熟悉了Button.Click事件,但对Canvas事件还很陌生。Button.Click事件的发生很简单,不附带任何其他信息;但有些事件则不然,它们附带了与事件有关的“参数”信息。DrawingCanvas.Touched事件中的x、y代表接触点在DrawingCanvas中的坐标,而touchedSprite代表接触点所碰到的DrawingCanvas中的对象(在App Inventor中称作sprite—精灵),但在第三章之前我们不会用到它。我们将利用接触点的xy坐标来绘制圆点。
2. 从DrawingCanvas抽屉中拖出DrawingCanvas.DrawCircle命令块,放在DrawingCanvas.Touched事件处理程序中,如图2-7所示;

图 2-7 用户触摸画布时,应用绘制一个圆点
在DrawingCanvas.DrawCircle块的右侧有三个插槽,需要填入三个参数:x、y、r。其中x、y用于指定绘制圆形的位置,r用于指定圆的半径。在屏幕左下角带感叹号的黄色警告显示数字“1”,表示需要填满这些插槽。从图中看到,有两组xy,这里要区分清楚:DrawingCanvas.Touched事件中的xy表示接触点位置(已知);而DrawingCanvas.DrawCircle命令块的xy插槽,用于设定绘制圆形的位置(待定)。我们恰好要在用户的接触点绘制圆形,因此DrawingCanvas.Touched事件中的xy值,可以作为DrawingCanvas.DrawCircle的x、y参数,插入到插槽中。
提示:可以从“when”块中提取事件的参数值,将鼠标悬停在参数上,将呼出“get”及“set”块。可以将“get x”块拖出并插到x插槽中,作为DrawCircle命令的x值。如图2-8所示。

图 2-8 读取事件参数:从DrawingCanvas.Touched事件中拖出“get x”块
3. 将鼠标悬停在x、y参数上可以唤出“get”块,将“get”块插入到DrawingCanvas.DrawCircle的插槽中,如图2-8、2-9所示;

图 2-9 已经设定了圆的位置(x,y),尚未指定圆的大小
4. 下面来设定圆的半径r。长度的单位是pixel(像素),是屏幕上能够绘制的最小的点。设r = 5:点击屏幕的空白区域,输入5然后回车(自动创建数字块“5”)并将其插入插槽r中。再看屏幕左下角的黄色三角形,数字由1变为0,因为所有插槽都被填满了。图2-10显示了DrawingCanvas.Touched事件处理程序最终的样子。

图 2-10 当用户触碰DrawingCanvas时,将在(x,y)点绘制一个半径为5的圆形
提示:在块编辑器中输入5然后回车,这种操作叫做输入块(typeblocking)。块编辑器会根据你输入的字符,显示与该字符相匹配的一系列块;如果输入的是数字,那么将创建一个数字块。
测试:看看测试设备上都有什么。触碰 DrawingCanvas,手指碰过的地方会留下一个圆点。如果在设计器中将DrawingCanvas.PaintColor属性设置为红色,那么圆点也是红色(否则应该是默认的黑色)。
下面添加拖拽事件处理程序,先看一下触碰(Toughed)事件与拖拽(Dragged)事件的区别:
触碰事件:手指在DrawingCanvas(画布)上放下再抬起,其间手指没有移动。
拖拽事件:手指在DrawingCanvas(画布)上放下,手指与屏幕保持接触并移动。
在绘图程序中,手指在屏幕上拖动,沿着手指移动的路径,将绘制出一条巨大的曲线,因为这条曲线实际上由数百个微小的线段构成:手指每次微小的移动,都将绘制一个微小的线段。
1. 从DrawingCanvas抽屉中拖出DrawingCanvas.Dragged事件处理程序块,如图2-11所示;DrawingCanvas.Dragged事件携带了以下参数:
StartX、StartY:手指开始拖动时所在的位置(整个曲线的起点);
currentX、currentY:手指的当前位置(微小线段的终点);
prevX、prevY:手指的上一个位置(微小线段的起点);
draggedSprite:布尔值,如果用户直接拖动一个图片,则其值为真。本章不会用到这个参数。

图 2-11 比起Toughed事件,Dragged事件携带了更多参数
2. 从DrawingCanvas抽屉中拖出DrawingCanvas.DrawLine块,插入DrawingCanvas.Dragged块中,如图2-12所示。

图 2-12 添加画线功能
DrawingCanvas.DrawLine块有四个参数,两点确定一线:设(X1,Y1)为起点,(X2,Y2)为终点。你能确定每个参数中需要插入什么值吗?记住,当手指在DrawingCanvas上拖动时,拖动事件将被调用很多次:在应用中,手指的每次移动都会绘制出一个微小线段,从(Prevx, prevy)到(currentX, currentY)。现在把它们填入DrawingCanvas.DrawLine块。
3. 拖出“get”块来充当画线的参数。将get prevX与get prevY分别插入到x1和y1插槽;而get currentX与get currentY插入到x2和y2插槽,如图2-13所示。

图 2-13 用户在屏幕上拖动手指,应用就在前一位置与当前位置之间画一条微小线段
测试:在设备上测试一下刚刚设定的行为:在屏幕上随意拖动手指,画出线段及曲线;触碰屏幕画出一个圆点。