用户:
SKQA查看:17 回复:4 评论:17 创建时间:2020-04-08T12:31:31
宝可梦小说工作室的第一个教程帖来了,今天我们来做一个幻影猫的特效。
一、看看效果
我们先看看效果吧。什么是幻影猫呢?幻影猫就是在移动的过程中,后面会有一些猫的映像出现,就这么简单~
二、角色
幻影猫嘛,角色无非就是一只猫咯~
三、程序
现在就开始我们的程序吧~
任务1 让猫移动起来
我们先让猫动起来吧。我们可以设置用上下左右键或wsad键控制猫,可以根据自己的喜好来决定什么键。本人喜欢用上下左右键,无非就是当按下上键y坐标增加,当按下键向y坐标减少,以此类推咯~
划重点!
但是怎么做会有一个严重的问题,就是移动不流畅。什么意思呢?当你按下上键时,你会发现,移动的步数会短那么一点点!并且当你长按上键时,移动速度简直超慢,特别是第一次!为什么会这样子呢?
↓↓↓
因为,scratch中的事件积木是有卡顿的,scratch中事件积木在很短的时间内只会执行一次,而不会执行很多次。毕竟kitten也只能判断首次按下呀。怎样理解它呢?在scratch中,有这样一个积木:
这个积木是来侦测响度是否大于10的。但是,如果你的响度一直大于10,虽然一直大于,但它也只能执行一次!也就是说,下一次执行会等待响度不大于10。这是为什么呢?
因为啊,我们知道,计算机执行程序是瞬间执行完毕的,但是如果你响度大于10了,持续的时间终归会大于这一瞬间。所以,计算机会为了保险,而等待下一次大于10再去执行下面的程序。
继续回过头来思考前面的问题,我们要的移动是没有卡顿的,我们要让计算机不停的判断是否按下了方向键。所以,我们需要重复执行,一直判断是否按了方向键。
继续划重点!
哈哈,如果你真的这么做,那你就大错特错啦!
为什么呢?
用事件积木编写的代码我们称之为“事件驱动机制”,用重复执行+如果那么编写的代码我们称之为“轮询机制”。
我们可以先来想象一下计算机执行两种机制的方式。
如果计算机执行“事件驱动机制”,计算机只需要等待条件为真后执行下面的程序即可,但是缺点是下一次执行会等待条件不成立。
如果计算机执行“轮询机制”,计算机会不停的问自己条件是否成立。
发现了吗?轮询机制也是有缺点的。
轮询机制的缺点是,计算机会不停的问自己条件是否成立,计算机会花费很多没有用的力气,发现了吗?
所以,我们又要避免事件驱动机制的卡顿,还要避免轮询机制的卡顿,两者融合,就形成了特殊形式的轮询机制。
我们需要一直等待着按下按键,按下按键了之后移动,一直重复。如图:
再次划重点哦~
哈哈,这又引来了一个新的问题。
我们知道,计算机执行程序是一瞬间就执行完毕的,我们按下按键的时间肯定也比它长。所以当按下按键的时候,计算机就会不停地等待按下按键,但已经按下了。能想象吗?
但是我们要的不是卡顿呀!所以,这是最优解决方案了!
至此,我们的任务1才到此结束。
如果你能想到这里,那你就厉害了!
如果有更优质的解决方案,欢迎在回帖区留言!
任务2 幻影
接下来到我们的幻影了。刚才说过幻影猫是指后面有一些猫的映像出现,那这些猫肯定是克隆体。
想到这了,无非就是不停的克隆,克隆体淡出,然后删除咯~
因为虚像为一百就是不可见,那么如果要让克隆体逐渐隐藏就是重复增加直到为一百。我觉得重复10次增加10是一个合理的数值,当然这里的快慢可以自行调整。注意即使不可见也需要删除克隆体,因为scratch克隆体有上限,最多300个克隆体,所以如果不删除克隆体,就无法生成更多的克隆体。
幻影猫至此就完成了~如果对此案例有问题,欢迎在回帖区留言~