最新消息:

Scratch3.0实现用自定义功能块画图

Scratch 少儿编程 5129浏览 0评论

友情提示:视频教程观看时请手动设置清晰度。

Scratch 中,通过“自制积木“,可以来自定义功能块(个人习惯不同,称为积木或功能块其实都是“Block“啦)。在Scratch Wiki 网站把这个模块解释为 “It holds custom procedures for the selected sprite“ ,即它包含着选定角色的自定义程序,这里不但可以看出我们可以自定义功能块来协助工作,也反映出了自定义功能块的局限性,即它只在它所属的角色中有效,要依附于某个角色而存在,我们目前无法在某个角色中直接调用另一个角色中的自定义功能块(可以通过广播的方式间接触发)。如果以java这样的高级语言的眼光来看,这样的自定义功能块有点像一个对象中的private方法,即它是这个对象私有的,别人无法直接访问。

 

为此限制头疼了一阵,网上一番调查,发现好多人都呼吁Scratch能推出全局的自定义功能块,即如果有一系列的程序片段(Scratch 中就相当一个功能块集),在一个项目中很多角色都会重复用到的话,如果能有个全局的功能块把这部分程序声明在其中,用到这部分程序的角色只需使用那个全局功能块就成了。

 

畅想结束,回到这次制作的画图程序。我们要自定义一个功能块,来画出正多边形,正多边形有多少边和边的长度,由这个功能块接收到的2个参数决定,通过循环调用这个自定义功能块,并在每执行一次后旋转一定角度,以画出别样的图形

 

Scratch3.0实现用自定义功能块画图

 

要画画,很快就发现Scratch3.0的又一个新变化,“画笔“被移到了“添加扩展“页面中。

Scratch3.0实现用自定义功能块画图

 

点击“添加扩展“后,在页面中点击“画笔

 

Scratch3.0实现用自定义功能块画图

这样,画笔模块就出现了。

Scratch3.0实现用自定义功能块画图

暂时不考虑画笔,选中默认的角色“小猫“,在它的“造型“页面中看到有2个造型,残忍删除第二个造型,第一个造型中在画布中删除整只小猫。删除后效果如下图:

Scratch3.0实现用自定义功能块画图

返回“代码“,自制积木“中“制作新的积木“,在弹出的窗口中,我们可以设置这个功能块的名称,要接收的参数,参数可以是数值或文本,也可以是接收布尔值。如果希望这个功能块更好的被理解,还可以添加文本标签。

 

Scratch3.0实现用自定义功能块画图

 

在定义新功能块前,我们首先要确定希望新积木来实现什么功能。如上文说的那样,在这个功能块中希望可以画出一个正多边形,边数边长作为这个功能块的参数。如何来画出一个正多边形呢?这需要一些几何知识,正多边形就是指各边和各内角都相等的多边形,当边数确定时,我们就能通过“360/边数“来得出每个内角对应的外角的角度,每个内角为180°-对应外角的值。当画正多边形时,每画完一条边,就旋转外角的角度,然后朝着新的方向画出下一条边。有几条边,就循环几次。

 

综合来看,我们只要知道边数,和边长,就可以通过上面的方法画出对应的正多边形了,给新的积木输入名称“正多边形“,点击“添加输入项 数字或文本“,为该积木添加2个参数,名称为“边数“和“边长“

 

Scratch3.0实现用自定义功能块画图

 

点击完成后,自定义的功能块“正多边形“就出现在“自制积木“当中了。在脚本区域中定义这个功能块的具体实现。在此并没有加入“画笔“的任何操作,这是因为画笔的起落,只需在程序中执行一次即可,不需要每次画一个正多边形都去起笔落笔。

 

Scratch3.0实现用自定义功能块画图

定义自定义功能块之后,就该设计主程序部分了,当点击开始按钮后,要让程序围绕原点一圈画出多边形。首先设定初始位置(x:0, y:0),用“画笔“中的“全部删除“清空画布,然后“落笔“开始作画。

落笔之后,画笔会随着位移的移动作画,如果想让10个边长为100的正方形以原点为轴画图,就要通过“360/10“来计算出每一次画完正方形后需要旋转的角度,无形的画笔在旋转之后会向着新的方向画出新正方形的第一条边。

Scratch3.0实现用自定义功能块画图

主程序中设定不同的边数、边长、重复执行的次数(计算旋转角度的除法算式也要有相应变化),可以画出不同的美妙图形,不妨来试试,这可比拿尺子比着画这些图要容易多了^_^

Scratch3.0实现用自定义功能块画图

您必须 登录 才能发表评论!