弹球游戏3:认识图片精灵
还记得上节课的作业吗?关于精灵组件的第一个紫色代码块!你一定感到困惑,为什么不直接利用精灵组件的默认反弹功能来处理边界碰撞事件,却要费力不讨好地自己写代码,老师一定是喜欢自找麻烦!
在下图中,两个深红色方框中的代码块的确是等效的,右上角的那个叫做App Inventor(以下简称AI2)的内置过程,是由AI2的开发工程师编写的,我们普通用户看不到其中的细节。

上图中下面的那些代码块也可以封装成过程,如下图所示,这个过程叫做用户自定义过程;两种过程的作用是相同的。

既然两种过程等效,为什么要自己写代码呢?这个问题依旧保留,稍后你就明白了。
这节课我们的目标是在应用中部署更多的精灵组件,如果将AI2的开发环境切换到英文版,可以看到对应于精灵的那个位置写着ImageSprite,而与球对应的组件叫做Ball。我们来看一下两种精灵组件的差别。
不过,在编程视图中,两类精灵组件的事件及内置过程是完全相同的,只是设置与读取属性的代码略有差异。下面我们来添加全部的精灵组件,并在设计视图中设置它们的属性。
听到了吗?如果球碰到墙壁,就Game Over!我们的目标不是让小球碰壁,而是让它“碰车”!AI2中让精灵反弹的内置过程只能处理精灵与边界之间的碰撞,而无法处理精灵与精灵之间的碰撞!
补充说明:
当小球与画布的3及-3号边界发生碰撞时,反射角与入射角的关系为 φ = 180 - θ ,其中θ为入射角,φ为反射角。
作业:
在设计视图中设置四个小滑车的x、y坐标,让它们精确地贴近画布边缘,并位于四个边界的中点。
报告:
截至2016年11月30日零时,累积订阅人数为1958位,昨日净增18位,感谢大家的坚持!
赞 (0)