最新消息:

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

Scratch 少儿编程 5257浏览 0评论

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

屏幕刷新频率是对于CRT显示器来说的,因CRT显示器是一种使用阴极射线管的显示器,屏幕上的图形图像是由一个个因电子束击打而发光的荧光点组成,由于显像管内荧光粉受到电子束击打后发光的时间很短,所以电子束必须不断击打荧光粉使其持续发光。对于LCD来说则不存在刷新率的问题,因为LCD中每个像素都在持续不断地发光,直到不发光的电压改变并被送到控制器中,所以LCD不会有“不断充放电”而引起的闪烁现象。电子枪从屏幕的左上角的第一行(行的多少根据显示器当时的分辨率所决定,比如800X600分辨率下,电子枪就要扫描600行)开始,从左至右逐行扫描,第一行扫描完后再从第二行的最左端开始至第二行的最右端,一直到扫描完整个屏幕后再从屏幕的左上角开始,这时就完成了一次对屏幕的刷新,周而复始。

 

简单来说,我们之所以能从各种屏幕上看到画面的动态变化,都是由于屏幕在进行不断地刷新——不断地快速切换静态的画面,由于视觉暂留效应,给人产生画面动态变化的“错觉”。在Scratch中,可以通过舞台观察到角色的运动等动态效果,那么,Scratch的舞台是否也可以看做是一个小屏幕呢?本文将对于Scratch舞台的刷新机制进行讨论。


 

 

01

 

案例演示

 

    Scratch2.0及以上的版本中,和屏幕刷新相关的功能,最明显的非自制积木中的“运行时不刷新屏幕”功能莫属。

    来看一个简单又比较经典的能体现“运行时不刷新屏幕”作用的案例。

代码1-函数绘制正方形:

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

利用画笔模块,可以在舞台中绘制出一个小正方形

 

代码2-函数打印行:

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

落笔,调用函数绘制正方形,绘制完毕后抬笔,向前移动一段距离,循环20次,即在水平方向上绘制出20个正方形

代码3-打印方阵:

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

调用函数打印行,在一行正方形打印完毕后移到下一行开头的位置,总共打印15行,构成一个方阵。

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

初始效果可以看到正方形绘制、打印行、打印方阵的全部过程(受舞台本身刷新率和GIF制作软件帧率影响,效果略有欠缺)

勾选函数绘制正方形中的“运行时不刷新屏幕”选项

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

可以看到此时的运行效果中,已经看不出绘制单个正方形的过程了,正方形总是一整个一整个地出现,同时整个方阵的打印速度也加快不少

20190801135536

在函数打印行中勾选“运行时不刷新屏幕”

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

此时的运行效果,看不出单个正方形的绘制过程,正方形总是一整行一整行地出现,整个方阵的打印速度比之前更快了。

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

在函数打印方阵中勾选“运行时不刷新屏幕”

 

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

此时的运行效果,逐行打印的过程也看不到了,整个方阵在程序启动后瞬间执行完毕。

 


02

解释

“在运行时不刷新屏幕”其实更确切地说,是不刷新舞台。这个功能的作用是,使得函数中的代码在执行时省去舞台刷新的步骤,在整个函数执行完毕后再刷新屏幕,将最终的运行效果呈现在用户眼前。由于刷新舞台会消耗计算机资源,需要一定的时间,因此使用“运行时不刷新屏幕”功能可以使特定的代码加快执行效率,缩短运行时间,但是用户无法通过舞台看到程序运行过程中的效果变化。

 


03

应用

    除了可以在类似上述案例这种绘图程序中加快绘制速度外,还可以应用于一些物理引擎中,用于在角色碰撞时控制其行为。

 

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

横版闯关类游戏

浅谈Scratch的舞台刷新机制 Part 1——自制积木的不刷新屏幕功能

在角色碰到地面时执行y坐标增加的程序,直到角色离开地面。实现物理引擎中地面对角色的支持力效果。

另外比如烟花的爆炸效果,烟花的爆炸物通常是用克隆体来实现的,而在循环中克隆,会导致爆炸物克隆体是逐个出现的。这时就可以将克隆代码移植到自制积木中,利用不刷新屏幕功能,实现几十个爆炸物几乎同时产生、烟花瞬间绽放的效果。

    总之,“运行时不刷新屏幕”功能为在Scratch中实现更多更丰富的效果提供了可能,是一个比较强大的功能。

转自公众号:
Scratch格物堂

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